У меня проблема с критериями 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);
Если я передаю нулевого пользователя (не использующего Subqueries.exists), онработает хорошо и возвращает мне действительные статьи расходов.Если я дам пользователю, если мне дадут следующее:
org.springframework.orm.hibernate3.HibernateSystemException: не удалось получить значение поля по отражателю getter of Expense.id;Вложенное исключение - org.hibernate.PropertyAccessException: не удалось получить значение поля по получателю отражения Expense.id
и ниже в журналах:
Невозможно установить поле java.lang.Integer Расход.id to java.lang.String
Кто-нибудь имеет представление о том, что я делаю неправильно?