У меня проблема с критериями Subqueries.exists.Hibernate 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: не удалось получить значение поля путем отражения getEx Expense.id; вложенное исключение org.hibernate.PropertyAccessException: не удалось получить значение поля с помощью отражения добытчик Expense.id
и нижней в журналах:
Невозможно установить java.lang.Integer поле Expense.id для Java .lang.String
Кто-нибудь имеет представление о том, что я делаю неправильно?
Если кажется, что из этого Restrictions.eq ("userExpense.primaryKey.expense", "mainExpense.id"), но он не работает, поскольку вы предложили либо: -? – Razvi
как это не работает? Какое исключение? У вас есть поле ID в Expense? –
java.lang.ClassCastException: java.lang.String не может быть отнесено к java.lang.Integer – Razvi