0
我遇到Subqueries.exists條件的問題。Hibernate子查詢。存在
我有以下幾點:
DetachedCriteria criteria = DetachedCriteria.forClass(Expense.class, "mainExpense")
.add(Restrictions.eq("group", group))
.addOrder(Order.desc("created"));
if (all) {
criteria.add(
Restrictions.or(
Restrictions.eq("status", ExpenseStatus.PENDING),
Restrictions.eq("status", ExpenseStatus.COMPLETE)
));
} else {
criteria.add(Restrictions.eq("status", ExpenseStatus.PENDING));
}
if (user != null) {
DetachedCriteria userSubCriteria = DetachedCriteria.forClass(UserExpense.class, "userExpense")
.add(Restrictions.eq("userExpense.primaryKey.user", user))
.add(Restrictions.eq("userExpense.primaryKey.expense", "mainExpense"))
.setProjection(Projections.property("userExpense.primaryKey"));
criteria.add(Subqueries.exists(userSubCriteria));
}
return getHibernateTemplate().findByCriteria(criteria);
如果我通過空用戶(不使用Subqueries.exists)它的工作原理很好,而且我返回有效的費用項目。如果我給用戶,如果給我以下內容:
org.springframework.orm.hibernate3.HibernateSystemException:無法通過反射得到一個字段值getter的Expense.id;嵌套的例外是org.hibernate.PropertyAccessException:無法獲取日誌中由Expense.id
和更低的反射吸氣字段值:
無法設置爲java.lang.Integer場Expense.id到Java .lang.String
有沒有人有任何想法我做錯了什麼?
如果似乎來自此Restrictions.eq(「userExpense.primaryKey.expense」,「mainExpense.id」),但它不起作用,因爲您建議: - ? – Razvi 2012-02-07 20:47:44
它怎麼不起作用?什麼是例外?您在費用中有ID字段嗎? – 2012-02-07 20:49:41
java.lang.ClassCastException:java.lang.String不能轉換爲java.lang.Integer – Razvi 2012-02-07 21:09:46