Из документации Hibernate:
...
псевдосинтаксис для UPDATE
и
DELETE
заявления это: ( UPDATE |
DELETE ) FROM? EntityName (WHERE
where_conditions)?
.
Некоторые моменты, на которые следует обратить внимание:
- В предложении from ключевое слово
FROM
необязательно
- В предложении from может быть только один объект. Оно может,
однако, будьте псевдонимом. Если субъект
имя псевдоним, то любое свойство
ссылки должны быть уточнены с использованием
этот псевдоним. Если имя объекта не
псевдоним, то это незаконно для любого
ссылки на свойства для уточнения.
- В массиве нельзя указывать ни явные, ни явные объединения
HQL-запрос. Подзапросы могут быть использованы
в предложении где, где
Сами подзапросы могут содержать
присоединяется.
- Предложение where также необязательно.
Хотя в документации явно не упоминается ограничение на заданную часть, можно интерпретировать , что подзапросы поддерживаются только в предложении where. Но ...
Я обнаружил проблему 4 года (вздох) о проблемах массового обновления ( HHH-1658 ), и, по словам репортера, работает следующее:
UPDATE Cat c SET c.weight = (SELECT SUM(f.amount) FROM Food f WHERE f.owner = c)
Интересно, поможет ли использование псевдонима в предложении from. Похоже, в любом случае есть какая-то странность.