У меня следующий запрос на 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? Другой подход заключается в создании промежуточной таблицы, чего я и стараюсь избегать.