Ich brauche diese SQL-Abfrage mit DetachedCriteria zu tun:Hibernate Criteria Subquery
SELECT g.id FROM games g
WHERE NOT EXISTS (
SELECT 1 FROM users_games ug WHERE ug.user_id = 1 AND g.id = ug.game_id)
Die Idee ist, die IDs von den Spielen zu erhalten, die nicht im Besitz des Benutzers ist. Ich habe versucht, wie 10 verschiedene Ansätze mit DetachedCriteria aber ich habe die „Unbekannte Einheit: null“ MappingException Der Code sollte wie folgt aussehen:
DetachedCriteria subquery = DetachedCriteria.forClass(UserGame.class, "ug")
.add(Restrictions.eq("ug.user.id", 1))
.add(Restrictions.eqProperty("ug.game.id","u.id"));
DetachedCriteria criteria = DetachedCriteria.forClass(Game.class, "g")
.add(Subqueries.notExists(subquery));
Rahmen die Projektionen auch zurück nur die ID der Spiele.
Irgendwelche Ideen? Ich denke, Hibernate hat Probleme, die Abfragen ohne Alias zu verbinden. Hinzufügen von Alias funktioniert, aber die Ergebnisse sind ziemlich falsch.
Ordnen Sie in Ihren Objekten/Mappings keine Assoziation zwischen "Spielen" und "User_Games" zu? –
user_games hat eine Zuordnung zu Spielen, aber nicht umgekehrt – Gonzalo