【发布时间】:2011-04-13 21:43:58
【问题描述】:
我需要使用 detachedCriteria 执行此 SQL 查询:
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)
我们的想法是从不属于用户的游戏中获取 ID。 我用 detachedCriteria 尝试了 10 种不同的方法,但我得到了“未知实体:null”MappingException 代码应如下所示:
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));
还将预测设置为仅返回游戏的 id。
有什么想法吗? 我认为 Hibernate 在加入没有别名的查询时遇到了一些麻烦。 添加别名有效,但结果非常错误。
【问题讨论】:
-
您没有在您的对象/映射中映射“游戏”和“用户游戏”之间的关联吗?
-
user_games 映射到游戏,但反之则不然