java - Hibernate 父表的分组依据

标签 java hibernate criteria

我有两个域,如下

WishList{
  int id;
  @ManyToOne
  Item item;
}

Item{
 int id;
 int productCategory;
 String productName;
}

现在假设我有产品

(1,1,Mobile )
(2,2,Microwave)
(3,3,flashDrive)
(4,1, Monitor)

现在如何在 WishList 中按查询进行分组,以便我得到

(1,1,Mobile )
(4,1, Monitor)
(2,2,Microwave)
(3,3,flashDrive)

我正在使用Hibernate Criteria

如何做到这一点?

最佳答案

如果您正在使用 hibernate Criteria您可以创建alias对于 Item 就像

Criteria criteria = hibernetSession.createCriteria(WishList.class);
criteria.createAlias("item", "itemAlias")
.setProjection(Projections.projectionList()
.add(Projections.property("id"),"id")
.add(Projections.property("itemAlias.id"),"itemAlias.id")
.add(Projections.property("itemAlias.productCategory"),"itemAlias.productCategory")
.add(Projections.property("itemAlias.productName"),"itemAlias.productName")
.add(Projections.groupProperty("itemAlias.productName")))
.setResultTransformer(Transformers.aliasToBean(WishList.class));
List<WishList> itemList = criteria.list();

并使用Projections对于 grouping

关于java - Hibernate 父表的分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848237/

相关文章:

java - 如何在hibernate中将条件结果设置为另一个pojo类变量

java - 如果天数差为 x 天,则 Spring MongoDB 查询文档

java - 为什么 JMSAppender 使用同步发送?我们可以改变这一点吗?

java - 我应该采用哪种类型的列表来从另​​一个表中加入(内部)2 个表

java - 为什么 java.lang.process 的 readline() 在读取具有相同操作系统的不同机器上的输入流时表现不同

mysql - 确保关闭 EntityManager 连接的正确方法是什么?

java - 如何处理 Hibernate/Spring 应用程序中的后台线程

.net - 有什么简单的方法可以将 Criteria 转换为 HQL?

java - Eclipselink 忽略带有 lambda 表达式的实体类

java将xmldate转换为字符串日期,可能是时区问题