Sql order by JPQL/Criteria API按MAX OneToMany协会排序
我有以下数据模型:与订单有一对一关系的客户Sql order by JPQL/Criteria API按MAX OneToMany协会排序,sql-order-by,one-to-many,jpql,criteria-api,Sql Order By,One To Many,Jpql,Criteria Api,我有以下数据模型:与订单有一对一关系的客户 @Entity public class Customer{ ... private Long id; @OneToMany private Collection<Order> orders; ... } @Entity public class Order{ ... private Long id; private Date orderDate; @Ma
@Entity
public class Customer{
...
private Long id;
@OneToMany
private Collection<Order> orders;
...
}
@Entity
public class Order{
...
private Long id;
private Date orderDate;
@ManyToOne
private Customer customer;
...
}
@实体
公共类客户{
...
私人长id;
@独身癖
私人托收令;
...
}
@实体
公共阶级秩序{
...
私人长id;
私有日期orderDate;
@许多酮
私人客户;
...
}
我想根据最新订单日期列出前10名客户。因此,在最新日期下订单的客户应出现在列表顶部,依此类推
是否可以使用一个JPQL或Criteria API执行此操作?在HQL中:
Query query = session.createQuery("select Customer c JOIN c.orders order ORDER BY order.orderDate DESC")
query.setMaxResults(10);
以及关于您编写的内容和代码的一些建议:
- 避免急躁的情绪。JPA中的每一个*ToOne关系都会让人抓狂。如果可能的话,将fetchType更改为LAZY
- 仅在最后一种情况下使用本机查询。在特定情况下,它们非常有用。但是,要进行一个简单的查询,如果希望同时使用多个数据库(集成测试的常见场景),则会受到限制。例如,为了进行这个限制信息量的简单查询,每个数据库都使用不同的方法来完成(
,limit
,rownum
,等等)。使用HQL/Criteria,您不必担心这一点top