Hibernate使用标准嵌套查询 [英] Hibernate nested query using criteria

查看:164
本文介绍了Hibernate使用标准嵌套查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可以创建一个生成以下sql的条件:

  select name from(select distinct name from person)as别名按顺序排列(名称); 

这里有两个sql -


  1. 从人中选择不同的姓名


  2. 从< 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 -

  1. select distinct name from person

  2. 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屋!

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