使用JPA

时间:2016-03-29 08:54:15

标签: java jpa join

我有类产品(对应 PRODUCT 表)

Class Product {
     @Id
     @Column(name = "PRODUCT_ID")
     private Long id;

     @Column(name = "NAME")
     private String name;

     //other attributes
}

我有另一个类所有者(对应 OWNER 表)

Class Owner{
     @Id
     @Column(name = "OWNER_ID")
     private Long id;

     @Column(name = "NAME")
     private String name;
}

我有一个名为 PRODUCT_OWNER 的中间表(一个产品可以拥有多个所有者)。

PRODUCT_OWNER表就是这样的。

 _______________________________________
| PRODUCT_ID | OWNER_ID | DISPLAY_ORDER |
|____________|__________|_______________|

在我的Product类中,我编写了一个join语句,使用中间PRODUCT_OWNER表

执行连接
@OneToMany(targetEntity = Owner.class, cascade = { CascadeType.ALL, CascadeType.MERGE }, fetch = FetchType.LAZY)
@JoinTable(name = "PRODUCT_OWNER", 
           joinColumns = { @JoinColumn(name = "PRODUCT_ID") }, 
           inverseJoinColumns = { @JoinColumn(name = "OWNER_ID") })
private Set<Owner> productOwners = new HashSet<Owner>(0);

我的中间表中有一列 DISPLAY_ORDER 。我想使用 DISPLAY_ORDER 对最终的Set productOwners 进行排序。这可能在上述方法中。请指教。

1 个答案:

答案 0 :(得分:1)

您好,您可以尝试将此添加到您的JoinTable

@OneToMany(targetEntity = Owner.class, cascade = { CascadeType.ALL, CascadeType.MERGE }, fetch = FetchType.LAZY)
@JoinTable(name = "PRODUCT_OWNER", 
       joinColumns = { @JoinColumn(name = "PRODUCT_ID") }, 
       inverseJoinColumns = { @JoinColumn(name = "OWNER_ID") })
@OrderColumn(name="DISPLAY_ORDER")
private List<Owner> productOwners = new HashSet<Owner>(0);
相关问题