2013-03-22 66 views
0

說我有以下實體JPA的孩子集合中最後一個元素的屬性排序查詢

class Order { 

    @Id 
    private long id; 

    private long orderNo; 

    @OneToMany 
    @JoinColumn(name="order_id") 
    @OrderBy("timeStamp ASC") 
    private List<Item> items; 
} 

class Item { 
    @Id 
    private long id; 

    // e.g. COMPLETED, IN PROGRESS, QUEUED, etc... 
    private String status; 

    private long timeStamp; 

    @ManyToOne 
    private Order order; 
} 

使用JPA我要回由狀態從最後一個項目中的項目進行排序的訂單列表列表,這是最近的一個,因爲items是按時間順序排列的。如何才能做到這一點?

+0

我強烈懷疑這不能在JPQL查詢來完成。如果我是你,我會在Order實體中存儲最近的項目時間戳,並按此排序(記住保持更新),或者實現自定義的「Comparator 」並使用'Collections.sort'(在Java中進行排序代碼,不在JQPL查詢中)。 – Nick 2013-03-22 20:56:30

回答

2

喜歡的東西,

Select o from Order o join o.items i where i.id = (Select max(timestamp) from Item i2 where i = i2) order by i.status 
相關問題