JPQL查询中的@OrderColumn

时间:2013-01-20 20:01:04

标签: jpa join many-to-many jpql

我正在使用@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

有办法吗?

2 个答案:

答案 0 :(得分:4)

您应该能够在JPQL中使用INDEX函数。

请参阅, http://en.wikibooks.org/wiki/Java_Persistence/JPQL#Special_Operators

答案 1 :(得分:-1)

不需要在查询中指定order列,它会在幕后自动使用,以保留元素添加到关系列表的顺序。有关更好的说明,请参阅此link