Raz*_*zvi 1 java spring hibernate criteria-api
我遇到了Subqueries.exists标准的问题.
我有以下内容:
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);
Run Code Online (Sandbox Code Playgroud)
如果我传递一个空用户(不使用Subqueries.exists),它可以正常工作并返回有效的费用项目.如果我给用户如果给我以下内容:
org.springframework.orm.hibernate3.HibernateSystemException:无法通过Expense.id的反射getter获取字段值; 嵌套异常是org.hibernate.PropertyAccessException:无法通过Expense.id的反射getter获取字段值
并在日志中降低:
无法将java.lang.Integer字段Expense.id设置为java.lang.String
有没有人知道我做错了什么?
我认为查询中存在两个问题:
Restrictions.eq().我不认为这是有效的.你应该用Restrictions.eqProperty("userExpense.primaryKey.expense.id", "mainExpense.id")| 归档时间: |
|
| 查看次数: |
10602 次 |
| 最近记录: |