使用 Hibernate 的 Criteria 和 Projections 选择多个不同的列
Posted
技术标签:
【中文标题】使用 Hibernate 的 Criteria 和 Projections 选择多个不同的列【英文标题】:Using Hibernate's Criteria and Projections to Select Multiple Distinct Columns 【发布时间】:2011-07-08 22:47:27 【问题描述】:使用 Hibernate 的 Criteria,我想执行相当于:
select distinct uspscity, state from citycomplete where USPSCITY = 'HOUSTON'
我认为执行以下操作会产生我想要的结果:
ProjectionList projList = new ProjectionList();
projList.add(Projections.distinct(Projections.property("id.state")));
projList.add(Projections.distinct(Projections.property("id.uspsCity")));
criteria.setProjection(projList);
但是,这实际上是执行如下操作:
select distinct uspscity, distinct state from citycomplete where USPSCITY = 'HOUSTON'
这显然会引发错误。
除了不使用 Criteria 之外,还有其他解决方案吗?
谢谢,
布兰登
【问题讨论】:
【参考方案1】:ProjectionList projList = Projections.projectionList();
projList.add(Projections.property("id.state"));
projList.add(Projections.property("id.uspsCity"));
criteria.setProjection(Projections.distinct(projList));
【讨论】:
以上是关于使用 Hibernate 的 Criteria 和 Projections 选择多个不同的列的主要内容,如果未能解决你的问题,请参考以下文章
在 Hibernate 中结合 NamedQuery 和 Criteria
Hibernate:Criteria 和 HQL 的映射行为之间的区别