2013-01-20 108 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