gpt4 book ai didi

java - hibernate 条件子查询

转载 作者:IT老高 更新时间:2023-10-28 20:34:55 24 4
gpt4 key购买 nike

我需要使用 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 在加入没有别名的查询时遇到了一些麻烦。添加别名有效,但结果非常错误。

最佳答案

需要添加别名,如下:

DetachedCriteria subquery = DetachedCriteria.forClass(UserGame.class, "ug")
.addAlias("ug.user", "user")
.add(Restrictions.eq("user.id", 1))
.addAlias("ug.game", "game")
.add(Restrictions.eqProperty("game.id","u.id"));

应该有帮助

关于java - hibernate 条件子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3738555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com