【发布时间】:2013-03-25 22:27:48
【问题描述】:
假设我有以下实体
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,我想返回一个订单列表,这些订单按项目列表中最后一个项目的状态排序,这是最新的,因为项目是按时间戳排序的。如何做到这一点?
【问题讨论】:
-
我强烈怀疑这不能在 JPQL 查询中完成。如果我是你,我要么将最近的商品时间戳存储在 Order 实体中并按其排序(记得保持更新),要么实现自定义
Comparator<Order>并使用Collections.sort(在 Java 代码中排序,而不是在 JQPL 查询中)。