2013-01-20 116 views
3

我有如下与@OrderColumn一个@ManyToMany映射:@OrderColumn在JPQL查询

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<>(); 
} 

我的问题是,我想写这将使用生成的@OrderColumn的JPQL查询@JoinTable 。例如:

SELECT t FROM Tag t WHERE ... ORDER BY t.ORDER_COLUMN 

有没有办法做到这一点?

回答

-1

无需在查询中指定顺序列,它会在幕后自动使用以保留元素添加到关系列表的顺序。为了更好的解释你可以参考这个link

+0

的@OrderColumn只在实体自动处理,但不能在JPA查询,我需要使用。我需要创建特定的JOIN/WHERE查询,最终将按顺序排序。 –

+0

在这种情况下,您需要自行管理这样的列,因为“@ OrderColumn”是不透明的,并且无法显式访问它。 – remigio