Подзапрос критериев гибернации

Мне нужно выполнить этот SQL-запрос с detachedCriteria:

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)

Идея состоит в том, чтобы получить идентификаторы игр, которые не принадлежат пользователю. Я пробовал 10 разных подходов с detachedCriteria, но получаю MappingException «Неизвестный объект: null». Код должен выглядеть так:

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

Установка также для прогнозов, чтобы возвращались только идентификаторы игр.

Есть идеи? Я думаю, что у Hibernate есть проблемы с присоединением к запросам без псевдонима. Добавление псевдонима работает, но результаты совершенно неверны.

23
задан bernie 17 September 2010 в 20:00
поделиться