2010-11-22 3 views
1

Ich verwende Kriterien, um eine Liste der Benachrichtigungen zu erhalten, die aktive Benutzer enthält. Das Problem ist, dass ich die folgende Fehlermeldung erhalten:Hibernate: Verwenden von Kriterien zum Zugriff auf Objekte innerhalb von Objekten

org.hibernate.QueryException: could not resolve property: user.active of: com.company.Notification 

Andere dann prüfen, ob der Benutzer aktiv ist i überprüfen müssen, dass die Benachrichtigung von einem Typ ist, was ich will. Hier ist mein Code:

session.createCriteria("com.company.Notification") 
    .add(Restrictions.or(Restrictions.eq("type", "email"), 
    .add(Restrictions.eq("user.active", true)).list(); 

Mitteilung hat ein Feld User user die wiederum ein Feld hat Boolean active

i auf dieser Seite Suche: https://forum.hibernate.org/viewtopic.php?t=948576&highlight=subproperty

, aber ich bin immer noch nicht groking, wie eine erstellen Kriterien, die auf etwas im Elternobjekt und im Kindobjekt zugreifen.

Antwort

6

versuchen, diese:

session.createCriteria("com.company.Notification") 
    .add(Restrictions.or(Restrictions.eq("type", "email") 
    .createCriteria("user") // this creates the join on the user table... 
    .add(Restrictions.eq("active", true)).list(); 

Hoffnung, die dazu beigetragen, ...

Verwandte Themen