Самостоятельные обновления в HQL - PullRequest
2 голосов
/ 11 января 2009

У меня следующий запрос на HQL:

update ProjectFile pf1 
set pf1.validUntil.id =123
where pf1 = (
select pf from ProjectVersion pv, ProjectFile as pf 
where pf.validFrom.sequence <= pv.sequence 
and pf.validUntil.sequence >= pv.sequence
and pf.state <> 12
and pf.projectVersion.project.id = 1
and pv.project.id = 1
and pv.id = 12
and pf.id not in (2,3,4)
)

Hibernate правильно анализирует запрос и генерирует SQL, но база данных (MySQL) завершается с ошибкой:

Вы не можете указать целевую таблицу ProjectFile для обновления в предложении FROM

Кажется, проблема в том, что обновляемая таблица запрашивается в том же контексте. Есть ли способ переписать HQL-запрос для получения SQL, который может быть правильно выполнен в MySQL? Другой подход заключается в создании промежуточной таблицы, чего я и стараюсь избегать.

1 Ответ

0 голосов
/ 26 мая 2009

Я столкнулся с той же проблемой и разместил вопрос здесь: MySQL / SQL: обновление с помощью коррелированного подзапроса из самой обновленной таблицы .

Чтобы решить вашу проблему, вам нужно зарегистрироваться на уровне ОБНОВЛЕНИЯ, пожалуйста, взгляните на ответ на мой вопрос.

...