gpt4 book ai didi

mysql - JPQL:如果不存在则更新

转载 作者:行者123 更新时间:2023-11-30 01:22:57 33 4
gpt4 key购买 nike

我正在尝试在 JPA/Hibernate/MySQL 应用程序中实现类似的目标:

UPDATE UserRating ur SET ur.item = :newItem WHERE ur.item = :oldItem AND NOT EXISTS (SELECT ur2 FROM UserRating ur2 WHERE ur.user = ur2.user AND ur2.item = :newItem)

因此,我只想更新某些行,前提是它们是唯一的(用户/项目组合必须是唯一的)。

我明白了

Caused by: java.sql.SQLException: You can't specify target table 'user_rating' for update in FROM clause

使用当前的 JPQL。

最佳答案

一种方法是将其变成JOIN

UPDATE UserRating r JOIN
(
SELECT user, item
FROM UserRating ur
WHERE item = :oldItem
AND NOT EXISTS
(
SELECT *
FROM UserRating
WHERE user = ur.user
AND item = :newItem
)
) q ON r.user = q.user
AND r.item = q.item
SET r.item = :newItem

这里是SQLFiddle 演示

关于mysql - JPQL:如果不存在则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343607/

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