我正在使用@OrderColumn进行@ManyToMany映射,如下所示:
class Tag {
@ManyToMany(fetch = FetchType.LAZY) @Getter
@JoinTable(
name = "tag_graph",
inverseJoinColumns = @JoinColumn(name = "parent_id"))
private Set<Tag> parents = new TreeSet<>();
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "parents") @Getter @OrderColumn
private List<Tag> children = new ArrayList<>();
}
我的问题是我想编写一个JPQL查询,该查询将使用生成的@JoinTable的@OrderColumn。类似的东西:
SELECT t FROM Tag t WHERE ... ORDER BY t.ORDER_COLUMN
有办法吗?
答案 0 :(得分:4)
您应该能够在JPQL中使用INDEX函数。
请参阅, http://en.wikibooks.org/wiki/Java_Persistence/JPQL#Special_Operators
答案 1 :(得分:-1)
不需要在查询中指定order列,它会在幕后自动使用,以保留元素添加到关系列表的顺序。有关更好的说明,请参阅此link。