2013-06-02 76 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