休眠条件子查询
我需要使用分离的Criteria执行此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。我尝试了10种不同的方法与分离标准,但我得到“未知实体:空”映射异常代码应该看起来像:
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在加入没有别名的查询时遇到了一些麻烦。添加别名有效,但结果非常错误。