2013-06-02 73 views
0

我有2個表員工和訂單:Console screens_before execusion 現在我試圖映射列表集合來獲得每個員工的所有訂單。我的地圖:休眠簡單直接映射

@Entity 
@Table(name = "employees", schema = "public") 
public class Employees implements java.io.Serializable { 

     /** 
      * 
      */ 
     private static final long serialVersionUID = 1885071569771542035L; 
     private short employeeid; 
     //... 

     private List<Orders> ordersList; 
     @OneToMany(mappedBy = "employees") 
     public List<Orders> getOrders() { 
       return ordersList; 
     } 

     public void setOrders(List<Orders> orders) { 
       this.ordersList = orders; 
     } 

@Entity 
@Table(name = "orders", schema = "public") 
public class Orders implements java.io.Serializable { 

     /** 
      * 
      */ 
     private static final long serialVersionUID = 405644896073449066L; 

     private short orderid; 
     //... 

     private Employees employees; 

     @ManyToOne 
     public Employees getEmployees() { 
       return employees; 
     } 

     public void setEmployees(Employees employees) { 
       this.employees = employees; 
     } 

     public Orders() { 
     } 

     public Orders(short orderid) { 
       this.orderid = orderid; 
     } 

但不幸的是我沒有得到。我一直在試圖檢測SQL查詢的數據庫,我覺得休眠創建新列:sql result

它可能需要參考:

orders0_.employeeid as employeeid1_0_, 

orders0_.employees_employeeid as employees15_1_0_, 

但我不知道如何強迫他這樣做。 (我正在使用postgresql)

+0

發佈文字而不是圖像。將其減少到最小的相關部分。並在此處發佈您的代碼,而不是在pastebin中。 –

+0

@JB Nizet它已經完成 – aragornsql

回答

0

您沒有爲用於映射關聯的連接列指定任何名稱,因此Hibernate使用默認的名稱,如JPA規範中指定的:employees_employeeid。要使用employeeid相反,你必須告訴Hibernate的:它不能猜測它:

@ManyToOne 
@JoinColumn(name = "employeeid") 
public Employees getEmployees() { 
    return employees; 
} 

此外,員工的一個實例是一個員工,所以類應該被命名爲員工,而不是員工。訂單相同。同樣的財產order.employees,這意味着訂單有幾個僱員,雖然它只有一個。該物業應該被命名爲employee

@ManyToOne 
@JoinColumn(name = "employeeid") 
public Employee getEmployee() { 
    return employee; 
} 
+0

我曾嘗試過@JoinColumn,但我懷疑由於其他一些問題,它沒有工作,那麼現在我已經添加,它很好,謝謝;) – aragornsql