我有一个 @ManyToMany 映射,其中表通过映射表进行自我引用,我们想在实际映射表中的订单 ID 上进行排序,但发现很难配置它。
我们可以在 hibernate xml 中执行它,因此很自然地假设 JPA 注释中存在支持。有人知道我们如何对映射表中的值进行排序吗?
表格是:
wap_site_components
intid
strname
intcomponentdef
dtmcreated
intcustomer
而自引用的映射表为:
wap_site_component_relations
intid
intparent (references intid in wap_site_components)
intchild (references intid in wap_site_components)
intorder (this is the value we want to order the collection on)
在 Hibernate Annotations 中,我们有:
@ManyToMany (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable (name = "wap_site_component_relations",
joinColumns = {@JoinColumn (name = "intparent", referencedColumnName = "id") },
inverseJoinColumns = {@JoinColumn (name = "intchild", referencedColumnName = "id") })
public Set<WapComponent> getChildren() {
return children;
}
这是我们在 hibernate xml 中执行它的方式:
<set
name="children"
table="wap_site_component_relations"
lazy="true"
cascade="none"
sort="unsorted"
order-by="intorder"
mutable="false"
>
<cache
usage="read-only"
/>
<key
column="intparent"
>
</key>
<many-to-many
class="se.plusfoursix.im46.data.wap.WapComponent"
column="intchild"
outer-join="auto"
/>
</set>
所以我们想使用@OrderBy 标签但不能引用映射表中的inorder 值。有任何想法吗?谢谢。
(我们已经在代码中的 children 集合上尝试了 @OrderBy(intorder) ,但这对我们来说并没有奏效)