Hibernate Unterabfragen.existiert

Ich habe ein problem mit Unterabfragen.besteht Kriterien.

Habe ich Folgendes:

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);

Wenn ich übergeben Sie einen null-Benutzer (nicht mit den Unterabfragen.vorhanden ist) funktioniert es okay und gibt mir die gültige aufwandspositionen. Wenn ich einen Benutzer, wenn mir die folgenden:

org.springframework.orm.hibernate3.HibernateSystemException: könnte nicht ein Feldwert durch Reflexion getter Aufwand.id; verschachtelte Ausnahme ist org.hibernate.PropertyAccessException: könnte nicht ein Feldwert durch Reflexion getter Aufwand.id

und tiefer in die Protokolle:

Kann nicht java.lang.Integer-Feld Kosten.id zu java.lang.String

Hat jemand eine Idee, was ich falsch mache?

InformationsquelleAutor Razvi | 2012-02-07
Schreibe einen Kommentar