這可能是因爲Hibernate是爲了試圖解決A + B作爲你的實體的財產,你會得到
org.hibernate.QueryException: could not resolve property: 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);
有一個問題,您必須使用列名稱而不是屬性名稱。
第二:公式:
添加到您的實體虛擬列使用@Formula註釋:
@org.hibernate.annotations.Formula("a + b")
private int aSumB;
,並把它作爲一個標準特性:
criteria.add(Restrictions.lt("aSumB", Integer.valueOf(10));
第三自定義標準:
如果您使用了很多考慮通過實施org.hibernate.criterion.Criterion
應該工作..你使用的數據庫,創建自定義的標準是什麼? – 2012-08-16 11:24:51
我有我自己的數據庫。但是,當我執行上面的腳本,我得到這個exeption:異常在線程「主」org.hibernate.QueryException:無法解析屬性:a + b:col – 2012-08-16 11:49:10
我想喬是問你使用的數據庫服務器的味道。 MySQL的? PostgreSQL的?甲骨文? MS SQLServer? – theon 2012-08-16 12:41:31