我有一個問題,我的Hibernate架構:@OneToOne或@ManyToOne引用了未知的實體:y.Person - 繼承問題
我有一個MappedSuperClass人,在員工和客戶。
--> Person.class
@MappedSuperclass
@Audited
public class Person extends PersistentObject {
@Column(name="TITLE")
@Enumerated(EnumType.STRING)
private Title title;
@Column(name="FIRST_NAME")
private String fname = null;
@Column(name="LAST_NAME")
private String lname = null;
--> Employee.class
@Entity
@Table(name="TBL_EMPLOYEE")
@Audited
public class Employee extends Person {
--> Customer.class
@Entity
@Table(name="TBL_CUSTOMER")
@Audited
public class Customer extends Person {
這個效果很好,但現在我的問題:我已經延長「人」與項目的列表,如地址/聯繫信息/等,並使用一個表的相同類型的所有項目(所有地址)。
當添加地址只有客戶,這是沒有問題:
--> Customer.java
@OneToMany(cascade = {CascadeType.ALL}, mappedBy="customer")
@LazyCollection(LazyCollectionOption.FALSE)
private List<Address> addresses = null;
--> Address.java
@Entity
@Table(name="TBL_ADDRESSES")
@Audited
public class Address extends PersistentObject {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="CUSTOMER_ID")
private Customer customer;
現在我想將地址擴展到員工也。我想,我可以使用的超類型保存地址,但是這似乎並沒有工作的權利:
--> Person.java
@OneToMany(cascade = {CascadeType.ALL}, mappedBy="person")
@LazyCollection(LazyCollectionOption.FALSE)
private List<Address> addresses = null;
--> Address.java
@Entity
@Table(name="TBL_ADDRESSES")
@Audited
public class Address extends PersistentObject {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="PERSON_ID")
private Person person;
運行時,我得到以下錯誤:@OneToOne or @ManyToOne on at.test.Address.person references an unknown entity: at.test.Person
有沒有可能性兩個實體都使用同一張表作爲他們的地址嗎? ID不會衝突,因爲員工和客戶共享相同的順序。或者我應該以另一種方式設計這個問題?
非常感謝您提前和最好的問候!
HAVA看看這個博客http://viralpatel.net/blogs/hibernate-inheritance-table-per-concrete-class-annotation-xml-mapping/。 – Flo
非常感謝這個鏈接,我意識到「每個子類一個表」範例就是我所期待的! – user2674457