简体   繁体   English

使用条件休眠嵌套查询

[英]Hibernate nested query using criteria

Is it posible to create a criteria for generating below sql: 是否可以创建以下sql生成条件:

select name from (select distinct name from person) as aliasname  order by lower(name);

here there are two sql - 这里有两个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() 我想创建标准,然后执行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作为子查询:

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

I don't have an answer for you, but why are you you doing a second select? 我没有答案,但是为什么要第二选择?

SELECT DISTINCT NAME FROM PERSON AS ALIASNAME ORDER BY LOWER(NAME)

would return the same data. 将返回相同的数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM