首先,我對JPA和Hibernate Annotations很陌生。休眠JPA繼承id映射
我有很多系統和解決方案是在我當前的框架中開發的,它基於數據訪問層上的hibernate 3.5和hbm.xml。現在我已經決定遷移到hibernate 4.1和Annotation,並刪除hbm.xml文件。
但是我的問題出現了。
我有一個名爲GenericEntity的包含「id」和其他字段(如「版本」和...)的所有實體的基類。該GenericEntity 不是直接映射到任何物理表,並且每個實體負責將這些字段映射到物理表/列。
現在註釋,我找不到任何方式忽略標識和版本字段/註釋在實體
這裏有我有:
public abstract class GenericEntity implements Serializable {
public static final short UNSAVED_VALUE = -1;
private long id = UNSAVED_VALUE;
private int version;
... getters and setters
}
public class User extends GenericEntity {
private String username;
private String password;
... getters and setters
}
和你hml.xml是
<class name="my.User" table="TBL_USER" optimistic-lock="version">
<id name="id" column="USR_ID" unsaved-value="-1">
<generator class="identity"/>
</id>
<version name="version" column="USR_VERSION"/>
<property name="username" column="USR_USERNAME" type="string" />
<property name="password" column="USR_PASSWORD" type="string" />
</class>
沒有GenericEntity的映射,也沒有用戶關於GenericEntity的繼承映射。
如何使用註釋做到這一點?
解決方法是將getId和setId定義爲抽象方法,但我無法將ID和版本添加到數以萬計的實體中。
另外,我不能對GenericEntity使用hibernate繼承。因爲我不能輕易改變我現有的表格,另一方面,它的性能會受到很大的損失。
此外,我想盡量減少我的框架的其他部分的變化。 GenericEntity廣泛用於DAL。
謝謝
Meysam Te。
坦克,你節省了我的時間。但我有「GeneratedValue策略」的問題,某處我需要身份和某處我需要SEQUENCE。我怎麼能覆蓋子類? – 2012-07-25 18:13:33