Hibernate 儿童计数标准

2024-01-01

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

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

我想做这样的事情:

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

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

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

Thanks!


嗯,我找到了解决办法。希望它可以帮助某人:

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));

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 儿童计数标准 的相关文章

随机推荐