繁体   English   中英

通过使用JPA中的中间表列进行排序

[英]Order by using intermediate table column in JPA

我有班级产品(对应于PRODUCT表)

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

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

     //other attributes
}

我有另一个类Owner(对应于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_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进行排序。 在上述方法中这可能吗? 请指教。

嗨,您可以尝试将其添加到您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM