muszę zrobić zapytanie SQL z DetachedCriteria:Hibernate Kryteria podzapytaniu
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)
Chodzi o to, aby uzyskać identyfikatory z gier, które nie są własnością użytkownika. Próbowałem jak 10 różnych podejść z DetachedCriteria ale pojawia się „Nieznane podmiot: zerowy” MappingException Kod powinien wyglądać następująco:
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));
Ustawienie także występy wrócić tylko identyfikator gier.
Wszelkie pomysły? Myślę, że Hibernate ma problemy z dołączaniem zapytań bez aliasu. Dodawanie aliasu działa, ale wyniki są całkiem błędne.
Nie odwzorowujesz powiązania między "grami" i "user_games" w swoich obiektach/mapowaniach? –
user_games ma mapowanie do gier, ale nie viceversa. – Gonzalo