2012-10-21 36 views
1

可能重複:
JPA OneToOne and ManyToMany between two entitiesJPA OneToOne和一對多的同一實體

我尋找一個解決辦法都無濟於事。我的問題是 我有兩個實體「員工」和「部門」 許多員工屬於一個部門 而一個部門由一個員工領導。 隨時都會出現@OneToOne和@OneToMany錯誤。 這是代碼

public class Department { 
@Required 
public String deptName; 

@OneToMany(mappedBy="dept") 
public List<Employee> employees = new ArrayList<Employee>(); 

@OneToOne 
public Employee deptHead = new Employee(); 

    ..... 

} 

public class Employee{ 
@Required 
public String surname; 

@Required 
public String othernames; 

@OneToOne(mappedBy="depthead") 
public Department headedBy = new Department(); 

@ManyToOne 
public Department dept = new Department(); 

... 
} 

是否可以兼得註釋和工作在同一時間?

+0

什麼是錯誤? – smk

+0

兩個表(或至少兩個表的相關字段)的SQL模式將會很有幫助。 –

回答

0

應該是。

  1. 當您創建,或詢問JPA創建的Employee的情況下,Employee嘗試實例化一個Department,它實例化一個Employee ...,到無限遠。

    從類定義中刪除= new Employee()和= new Department()表達式;使用適當的setter方法。

  2. 確認在Department表上定義了定義的SQL列,其定義爲;具體而言,Department表具有引用Employee的外鍵。其基礎是,@OneToOne(mappedBy="...")應該在JPA實體上定義,不是有一個SQL外鍵,引用確實的實體。


這且不說,對Department

@OneToOne(mappedBy="depthead") 
public Department headedBy = new Department(); 

和相應的字段之間的問題:

@OneToOne 
public Employee deptHead = new Employee(); 

有分別deptheaddeptHead之間的情況下,不匹配。

+0

感謝您的觀察,我改變了它,仍然出現錯誤。這是錯誤 JPA錯誤 發生JPA錯誤(無法構建EntityManagerFactory):無法實例化測試對象模型。部門 –

+0

請編輯您的原始問題並提供錯誤詳細信息;這將問題定義保存在一個地方,並幫助您獲得更好的答案。 –

+0

另外,如果您修復了代碼 - 更新您的問題以顯示更正的代碼。 –