Hibernate使用标准嵌套查询 [英] Hibernate nested query using criteria
本文介绍了Hibernate使用标准嵌套查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可以创建一个生成以下sql的条件:
select name from(select distinct name from person)as别名按顺序排列(名称);
这里有两个sql -
-
从人中选择不同的姓名
-
从< 1的输出中选择名称> as aliasname order by lower(name)
我想创建条件,然后做 criteria.list()
解决方案
您的需求:
$ $ p $ criteria.addOrder(Order.asc(name)。ignoreCase())
.setProjection (Projections.distinct(Projections.property(name)))
.list();
或者,此条件使用DetachedCriteria和名称投影作为子查询:
DetachedCriteria distinctNamesCriteria = DetachedCriteria.forClass(Person.class);
distinctNamesCriteria.setProjection(Projections.distinct(Projections.property(name)));
$ b criteria.add(SubQueries.propertyIn(name,distinctNamesCriteria))
.addOrder(Order.asc(name)。ignoreCase())
.list( );
Is it posible to create a criteria for generating below sql:
select name from (select distinct name from person) as aliasname order by lower(name);
here there are two sql -
select distinct name from person
select name from <output of 1> as aliasname order by lower(name)
i want to create the criteria and then do criteria.list()
解决方案
I think, this will suit your needs:
criteria.addOrder(Order.asc("name").ignoreCase())
.setProjection(Projections.distinct(Projections.property("name")))
.list();
or, this criteria uses a DetachedCriteria with a name projection as a subquery:
DetachedCriteria distinctNamesCriteria = DetachedCriteria.forClass(Person.class);
distinctNamesCriteria.setProjection(Projections.distinct(Projections.property("name")));
criteria.add(SubQueries.propertyIn("name", distinctNamesCriteria))
.addOrder(Order.asc("name").ignoreCase())
.list();
这篇关于Hibernate使用标准嵌套查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文