使用 Hibernate,我想根据条件更新数据库中的数据,但出现以下错误:“要遍历的节点不能为空”
这是我的数据库描述:
Account: id, email, password
Member : id, account, team
Team: id, current (and a reference to member => members)
这是我的 JPA:
UPDATE Team t SET t.current = :current LEFT JOIN t.members m WHERE t.current = :current_true AND m.account = :account
我做错了什么? 如果我将 LEFT JOIN 移动到 SET 之前:
UPDATE Team t LEFT JOIN t.members m SET t.current = :current WHERE t.current = :current_true AND m.account = :account
我得到:“期待 SET,找到 LEFT”
如果我删除连接:
UPDATE Team t SET t.current = :current WHERE t.current = :current_true AND t.members.account = :account
我得到:“非法尝试取消引用集合”。
更新值的正确方法是什么?
感谢您的帮助!
最佳答案
使用子查询:
(未测试)
UPDATE Team t SET t.current = :current
WHERE t.id in (select t1.id from Team t1 LEFT JOIN t1.members m WHERE t1.current = :current_true AND m.account = :account)
关于java - 使用 join 更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201895/