我正在努力获得一个简单的更新,以便在MySQL数据库上使用Hibernate(使用HQL)进行设置。那里 是关于类似于我遇到的错误的其他线程,但没有任何说明相同的问题。
我要做的更新是使用同一个表中另一行的信息更新一行。这里没什么特别的,我有一个使用Toad在MySQL工作的类似版本。
据我所知,HQL不喜欢更新的内部联接,而是使用子查询 - 我有这个权利吗?
好吧无论如何,下面是我使用的更新的第一个版本。这引发了错误消息 “无效的路径:'tbB.column1'”,看下面我不知道问题出在哪里。
UPDATE tableA tbA
SET tbA.column1 = tbB.column1
WHERE tbA.operationalId =
(SELECT tbB.operationalId FROM tableA AS tbB
WHERE tbA.operationalId = tbB.operationalId)
AND tbA.column2 = 1
进一步研究这个问题,我用直接替换了上面列出的'set'语句 将值赋给tbA.column1并遇到下面列出的其他错误。
error =“您无法在FROM子句”
中为更新指定目标表'tableA'UPDATE tableA tbA
SET tbA.column1 = 1
WHERE tbA.operationalId =
(SELECT tbB.operationalId FROM tableA AS tbB
WHERE tbA.operationalId = tbB.operationalId)
AND tbA.column2 = 1
如果有人能指出我正确的方向,我会不知道是否需要进一步调整sql以便在Hibernate中成功运行。
提前谢谢你。
答案 0 :(得分:0)
MySQL支持join
中的update
。我不确定hibernate是否会这样做:
UPDATE tableA tbA join
tableA tblB
on tbA.operationalId = tbB.operationalId
SET tbA.column1 = tbB.column1
WHERE tbA.column2 = 1;