这可能是因为 Hibernate 试图将a+b解析为您的实体的属性,而您得到
org.hibernate.QueryException:无法解析属性:a+b
可能的解决方案很少:
第一:sql限制:
//Hibernate 4.x
criteria.add(Restrictions.sqlRestriction("col_a+col_b < ?", Integer.valueOf(10), org.hibernate.type.StandardBasicTypes.INTEGER);
// Hibernate 3.x
criteria.add(Restrictions.sqlRestriction("col_a+col_b < ?", Integer.valueOf(10), org.hibernate.Hibernate.INTEGER);
有一个问题是您必须使用列名而不是属性名。
第二:公式:
使用@Formula注释向您的实体添加一个虚拟列:
@org.hibernate.annotations.Formula("a + b")
private int aSumB;
并将其用作标准属性:
criteria.add(Restrictions.lt("aSumB", Integer.valueOf(10));
第三个自定义标准:
如果您经常使用它,请考虑通过实现org.hibernate.criterion.Criterion创建自定义标准