我有一個抽象類,它提供了一些要繼承的EJB實體的一些常用功能。其中之一是時間戳列。具有抽象類繼承的JPA實體
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());
}
}
的問題是,時間戳列沒有被添加到數據庫表。是否有一些註釋需要添加到AbstractEntity中才能將lastModified字段作爲列繼承?
我試圖在AbstractEntity中添加@Entity,但在部署時導致異常。
org.hibernate.AnnotationException: No identifier specified for entity:
AbstractEntity
許多感謝您Kostha - 「@ MappedSuperclass」註釋只是我正在尋找的解決方案。 – Dobbo
不客氣:)我在代碼中注意到了另外一件事,也許你會發現它很有用 - 請參閱編輯。 – kostja
再次感謝Kostja - 你的編輯正是我要去的地方。碰巧發生的情況是,我必須自己修改'lastModified',因爲(一些)實體對象與客戶端共享,數據通過XML和JAXB傳輸。 – Dobbo