休眠儿童计数标准 [英] Hibernate children count criteria

查看:54
本文介绍了休眠儿童计数标准的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有父母/子女关系:newsItem 1- *评论。



如何使用一个条件选择新闻条目列表以及每个新闻条目的评论计数查询吗?



我想执行以下操作:

  select news_item。*,来自news_item的count(comment.id)加入对comment.news_item_id = news_item.id的评论组按news_item.id分组

结果应该是对象列表[2] {newsItem,int}。



这可以通过Criteria查询来完成吗?



谢谢!

解决方案

好,我找到了一个解决方案。希望它对某人有帮助。

 条件标准= session.createCriteria(NewsItem.class); 

条件.createAlias(NewsItem.COMMENTS,NewsItem.COMMENTS,Criteria.LEFT_JOIN);

ProjectionList属性= Projections.projectionList();
properties.add(Projections.groupProperty(NewsItem.ID).as(NewsItem.ID));
properties.add(Projections.property(NewsItem.DATE).as(NewsItem.DATE));
properties.add(Projections.property(NewsItem.NAME).as(NewsItem.NAME));
properties.add(Projections.property(NewsItem.PREVIEW).as(NewsItem.PREVIEW));
properties.add(Projections.property(NewsItem.IMAGE).as(NewsItem.IMAGE));
properties.add(Projections.count(NewsItem.COMMENTS +。 + Comment.ID).as(NewsItem.COMMENTS_COUNT));
条件.setProjection(属性);
条件.setResultTransformer(Transformers.aliasToBean(NewsItem.class));

还应该向NewsItem类添加虚拟属性COMMENTS_COUNT(长)。


I have parent/children relationship: newsItem 1-* comment.

How can I select a list of newsItems and also count of comments for each newsItem using one Criteria query?

I want to do something like this:

select news_item.*, count(comment.id) from news_item left join comment on comment.news_item_id = news_item.id group by news_item.id

The result should be the List of Object[2] { newsItem, int }.

Could this be accomplished with Criteria queries?

Thanks!

解决方案

Well, I've found a solution. Hope it helps someone:

Criteria criteria = session.createCriteria(NewsItem.class);

criteria.createAlias(NewsItem.COMMENTS, NewsItem.COMMENTS, Criteria.LEFT_JOIN);

ProjectionList properties = Projections.projectionList();
properties.add(Projections.groupProperty(NewsItem.ID).as(NewsItem.ID));
properties.add(Projections.property(NewsItem.DATE).as(NewsItem.DATE));
properties.add(Projections.property(NewsItem.NAME).as(NewsItem.NAME));
properties.add(Projections.property(NewsItem.PREVIEW).as(NewsItem.PREVIEW));
properties.add(Projections.property(NewsItem.IMAGE).as(NewsItem.IMAGE));
properties.add(Projections.count(NewsItem.COMMENTS + "." + Comment.ID).as(NewsItem.COMMENTS_COUNT));
criteria.setProjection(properties);
criteria.setResultTransformer(Transformers.aliasToBean(NewsItem.class));

You should also add a virtual property COMMENTS_COUNT (Long) to NewsItem class.

这篇关于休眠儿童计数标准的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆