是否可以创建组合多个字段注释的组合注释?
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
扩展注释。显然,这种解决方案的缺点是在访问实体中的字段时更加复杂。
我的 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
扩展注释。显然,这种解决方案的缺点是在访问实体中的字段时更加复杂。