いくつかのEJBエンティティが継承するいくつかの一般的な機能を提供する抽象クラスがあります。これらの1つは、タイムスタンプ列です。
public abstract class AbstractEntity {
...
private long lastModified;
...
@Column
public long getLastModified() {
return lastModified;
}
public void setLastModified(long ts) {
lastModified = ts;
}
}
と
@Table
@Entity
public class MyEntity extends AbstractEntity {
...
private Long key;
private String value;
...
@Id
public Long getKey() {
return key;
}
public void setKey(Long k) {
key = k;
}
@Column
public String getValue() {
return value;
}
public void setValue(String txt) {
value = txt;
setLastModified(System.currentTimeMillis());
}
}
問題は、タイムスタンプ列がデータベーステーブルに追加されていないことです。lastModifiedフィールドを列として継承するために、AbstractEntityに追加する必要のある注釈はありますか?
@EntityをAbstractEntityに追加しようとしましたが、展開時に例外が発生しました。
org.hibernate.AnnotationException: No identifier specified for entity:
AbstractEntity