我需要重寫一個實體對象的getter,在它的超類中定義了db列,所以我可以添加額外的註釋。休眠:重寫實體獲取器來添加註釋
實施例:
@MappedSuperclass
public class Person {
String name;
@Column(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Entity
@Table(name="employee")
@XmlType(name="employee")
public class Employee extends Person {
@Override
@XmlAttribute(name = "name")
public String getName() {
return super.getName();
}
}
類Person
包含幾個實體共同屬性。 Employee
類擴展person並定義一個數據庫表(每個類的策略表)。我也想將Employee
類序列化爲XML,所以我需要向其getter添加額外的註釋,因此我重寫了它們。
問題是,當我嘗試運行此代碼時,我得到一個休眠MappingException
說:在Employee中找到名稱的重複屬性映射。
有沒有辦法告訴Hibernate,Employee中的名字getter不是重複的,而是重寫(可能帶有一些註釋)。還是有另一種方法來做我所需要的?
這個確切的事情來到我的腦海後我寫完這個問題。我試過了,它似乎工作,但我不喜歡它,因爲它看起來很混亂,因爲實際上持久化的屬性上存在@Transient註解。但如果沒有更好的東西出現,我會堅持這個解決方案。謝謝。 – Jardo 2015-03-25 09:48:01
不幸的是,Java方法重寫並不適用於JPA元數據。 – 2015-03-25 09:49:42