Java 使用条件休眠嵌套查询
是否可以创建生成以下sql的条件:Java 使用条件休眠嵌套查询,java,spring,hibernate,postgresql,jpa,Java,Spring,Hibernate,Postgresql,Jpa,是否可以创建生成以下sql的条件: select name from (select distinct name from person) as aliasname order by lower(name); 这里有两个sql- 从人员中选择不同的名称 按lowername的别名顺序从中选择名称 我想创建标准,然后执行标准。列出我没有答案,但为什么要进行第二次选择 SELECT DISTINCT NAME FROM PERSON AS ALIASNAME ORDER BY LOWER(NAM
select name from (select distinct name from person) as aliasname order by lower(name);
这里有两个sql-
从人员中选择不同的名称
按lowername的别名顺序从中选择名称
我想创建标准,然后执行标准。列出我没有答案,但为什么要进行第二次选择
SELECT DISTINCT NAME FROM PERSON AS ALIASNAME ORDER BY LOWER(NAME)
将返回相同的数据。我认为,这将满足您的需要:
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")));
criteria.add(SubQueries.propertyIn("name", distinctNamesCriteria))
.addOrder(Order.asc("name").ignoreCase())
.list();
亲爱的OGZD,在你的建议中,遗漏了两件事:1。它不适用于lowerneed使用。ignoreCase,2。它不提供嵌套选择。由于此查询通过lowername从人员顺序中选择不同的名称;如果postgres失败,我正在寻找问题中描述的变通查询,如LowerNames中的选择姓名从选择不同姓名从个人中选择别名顺序。您确定Generated查询返回的结果集与问题中提到的相同吗??在你更新代码之前我已经试过了,得到了不同的结果集。此条件实际上不会返回不同的记录。如果您引用一个类似的答案来回答这个问题,那就太好了。这实际上在postgres中给出了一个错误:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在SELECT列表中。因此,我将选择两个嵌套的选项。您不能按“选择部分”中不存在的列进行排序。