我正在使用休眠版本3.6.10.Final和hibernate-jmx.version 3.5.6-最终版本。我有一个休眠条件
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: could not resolve property: 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”在订购时有效,而在使用限制时无效。
答案 0 :(得分:0)
与“普通” 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;