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