В документации API Criteria описаны только запросы, поскольку API Criteria не предназначен для операций DDL.На самом деле, я бы даже сказал, что весь JPA API на самом деле не предназначен для этого.
4.10 Операции массового обновления и удаления
Операции массового обновления и удаления применяются к объектам одного класса объектов (вместе сего подклассы, если таковые имеются).В предложении FROM или UPDATE может быть указан только один тип абстрактной схемы объекта.
Синтаксис этих операций следующий:
update_statement ::=
update_clause [where_clause]
update_clause ::= UPDATE entity_name [[AS] identification_variable]
SET update_item {, update_item}*
update_item ::= [identification_variable.]{state_field | single_valued_object_field} =
new_value
new_value ::=
scalar_expression |
simple_entity_expression |
NULL
delete_statement ::= delete_clause [where_clause]
delete_clause ::= DELETE FROM entity_name [[AS] identification_variable]
Синтаксис предложения WHERE описан в Разделе 4.5.
Операция удаления применяется только к объектамуказанный класс и его подклассы.Он не относится к связанным сущностям.
new_value
, указанный для операции обновления, должен быть совместим по типу с полем, которому он назначен.
Bulkобновлять карты непосредственно в операции обновления базы данных, минуя оптимистические проверки блокировки.Переносимые приложения должны вручную обновить значение столбца версии, если это необходимо, и / или вручную проверить значение столбца версии.
Контекст постоянства не синхронизирован с результатом массового обновления или удаления.
Следует соблюдать осторожность при выполнении операций массового обновления или удаления, поскольку они могут привести к несоответствиям между базой данных и объектами в активном контексте постоянства.Как правило, массовые операции обновления и удаления должны выполняться только внутри транзакции в новом контексте постоянства или перед извлечением или доступом к объектам, состояние которых может быть затронуто такими операциями.
Примеры:
DELETE
FROM Customer c
WHERE c.status = ‘inactive’
DELETE
FROM Customer c
WHERE c.status = ‘inactive’
AND c.orders IS EMPTY
UPDATE customer c
SET c.status = ‘outstanding’
WHERE c.balance < 10000