#java #mysql #sql #hibernate #hql
#java #mysql #sql #спящий режим #hql
Вопрос:
Я пытаюсь получить то, что должно быть простым обновлением для настройки для работы в режиме гибернации (с использованием HQL) через базу данных MySQL. Существуют и другие темы, касающиеся ошибок, подобных тем, с которыми я столкнулся, но ничего, что говорит о той же самой проблеме.
Обновление, которое я пытаюсь сделать, — это обновить строку информацией из другой строки в той же таблице. Здесь ничего особенного, и у меня есть аналогичная версия, работающая в MySQL с использованием Toad.
Насколько я понимаю, 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 и столкнулся с другой ошибкой, которая указана ниже.
ошибка = «Вы не можете указать целевую таблицу ‘TableA’ для обновления в предложении FROM»
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 для успешного запуска в режиме гибернации.
Заранее благодарю.
Ответ №1:
MySQL поддерживает join
update
. Я не уверен, работает ли hibernate:
UPDATE tableA tbA join
tableA tblB
on tbA.operationalId = tbB.operationalId
SET tbA.column1 = tbB.column1
WHERE tbA.column2 = 1;
Комментарии:
1. Да, я могу заставить его работать в MySQL, просто не переходить в спящий режим, и в этом заключается моя задача.