有没有办法使用 Hibernate 或 JPA 注释来覆盖子类中字段的可选性?举个例子:
家长班
这是一个定义许多公共字段的基类。对于下面的示例,我只显示了一个我想在几个子类中覆盖的字段。在 中@MappedSuperclass
,此字段为必填项(不允许为空)。
@MappedSuperclass
public abstract class GenericLog {
protected String sessionId;
@Basic(optional = false)
@Column(name = FIELD__SESSION_ID__COLUMN, length = 50)
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
}
儿童班
这是一个子类。它在父类中定义了相同的 sessionId 字段,唯一的区别是该字段应允许此类中的空值。
@Entity
@Table(name = LogError.TABLE_NAME)
@Cache(usage = CacheConcurrencyStrategy.NONE)
public class LogError extends GenericLog {
@Basic(optional = true)
@Column(name = FIELD__SESSION_ID__COLUMN, length = 50)
@Override
public String getSessionId() {
return super.getSessionId();
}
@Override
public void setSessionId(String sessionId) {
super.setSessionId(sessionId);
}
}
我尝试使用@AttributeOverride
注释,但这不起作用,甚至指定了nullable
属性。
PS 我正在使用 Hibernate 4.1.9(JPA 2.0 注释)。