Hibernate がa+bをエンティティのプロパティとして解決しようとしている可能性があり、
org.hibernate.QueryException: プロパティを解決できませんでした: a+b
考えられる解決策はいくつかあります。
1つ目: 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);
プロパティ名の代わりに列名を使用する必要があるという問題が 1 つあります。
2番目: 式:
@Formulaアノテーションを使用してエンティティに仮想列を追加します。
@org.hibernate.annotations.Formula("a + b")
private int aSumB;
それを標準プロパティとして使用します。
criteria.add(Restrictions.lt("aSumB", Integer.valueOf(10));
3 番目のカスタム基準:
頻繁に使用している場合は、org.hibernate.criterion.Criterionを実装してカスタム基準を作成することを検討してください。