gpt4 book ai didi

java - 带有投影 alise 的 Hibernate Criteria 限制

转载 作者:行者123 更新时间:2023-12-02 09:51:50 25 4
gpt4 key购买 nike

我正在使用 hibernate 版本 3.6.10.Final 和 hibernate-jmx.version 3.5.6-Final.. 我有一个 Hibernate 标准

getCurrentSession().createCriteria(CustOrder.class)
.createAlias("custOrderSubStatusComments", "comment")
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("id"))
.add(Projections.max("comment.id"))
.add(Projections.property("comment.value"), "val")
)
.add(Restrictions.eq("val", haltreason)).list();

此代码给出错误org.hibernate.QueryException:无法解析属性:val of:com.**.CustOrder

但是下面的代码工作正常。

getCurrentSession().createCriteria(CustOrder.class)
.createAlias("custOrderSubStatusComments", "comment")
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("id"))
.add(Projections.max("comment.id"))
.add(Projections.property("comment.value"), "val")
)
.addOrder(Order.asc("val")).list();

我不明白为什么“val”对于排序有效而对于限制无效。

最佳答案

与“普通”SQL 相同。

select 子句是您作为查询结果呈现的内容。例如我不能执行以下操作...

select first_name f 
from customer
where f='hello';

但是我可以...

select first_name f 
from customer
where first_name='hello'
order by f;

如果可以的话,您将能够编写没有多大意义的表达式,例如......

select age + 10 as AgePlusTen
from Person
where AgePlusTen < 70;

如果你真的愿意,你可以使用子选择...

select * from (
select age + 10 as AgePlusTen
from Person
) where AgePlusTen < 70;

关于java - 带有投影 alise 的 Hibernate Criteria 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56273089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com