HibernateまたはJPAアノテーションを使用して、サブクラスのフィールドのオプションをオーバーライドする方法はありますか?次の例を見てください。
親クラス
これは、いくつかの一般的なフィールドを定義する基本クラスです。以下の例では、いくつかのサブクラスでオーバーライドする単一のフィールドを示しています。で@MappedSuperclass
、このフィールドは必須です(nullは許可されません)。
@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フィールドがありますが、唯一の違いは、フィールドがこのクラスでnullを許可する必要があることです。
@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私はHibernate4.1.9(JPA 2.0アノテーション)を使用しています。