是否可以创建组合多个字段注释的组合注释?

Is is possible to create a combo-annotation which combines multiple field annotations?

我的 JPA 实体中有一些布尔字段,它们以下列方式注释:

@Column(length = 1)
@Type(type = "yes_no")
private final boolean myField;

是否可以创建一个组合注释(例如 MyAnnotation)来组合这两个注释?

@MyAnnotation
private final boolean myField;

怎么做?

显然,您可以创建一个提供与多个其他注释等效的注释。

同样显然没有 JPA 提供者会支持它,因为他们只会检查 javax.persistence 注释(不是 @Type 是 javax.persistence)。

你想要的类似于CDI stereotypes - 不幸的是,JPA 不支持这样的概念,因此你必须复制所有重复出现的注释。

如果您有能力将您的字段包装到一个对象中,您可以将其标记为 @Embeddable 并将您的字段放入其中 - 无论您将该对象嵌入到实体中的何处,该字段上的注释都会被复制.您可以使用 @AnnotationOverrides 扩展注释。显然,这种解决方案的缺点是在访问实体中的字段时更加复杂。