JPQL 或 JPA 标准生成器中的 DISTINCT ON

Mih*_*vic 5 postgresql jpa distinct jpql

我有一个 JPA 实体 User,其中包含一个字段(实体)City。我想选择一页,例如 10 个来自不同城市的用户。

在 SQL 中我会使用类似的东西:

SELECT DISTINCT ON (u.city_id) u.username ,u.email, u.city_id ....
FROM user u LIMIT 0,10 ....
Run Code Online (Sandbox Code Playgroud)

但我需要使用 JPQL 或 JPA 标准生成器来完成此操作。我怎样才能实现这个目标?

小智 0

You can do this by using Hibernate Criteria Query 

sample code can be like this 




 Criteria criteria = session.createCriteria(user.class);
 ProjectionList projectionList = Projections.projectionList();
           projectionList.add(Projections.distinct(projectionList.add(Projections.property("city_id"),  "cityId")));
      projectionList.add(Projections.property("username"), "username");
     projectionList.add(Projections.property("email"), "email");
      criteria.setProjection(projectionList2);
     criteria.setResultTransformer(Transformers.aliasToBean(user.class)); 
     List list = criteria.list();
Run Code Online (Sandbox Code Playgroud)