2013-03-22 28 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 
相关问题