JPA / Hibernate типы безопасных запросов DELETE - PullRequest
2 голосов
/ 06 апреля 2011

Единственные примеры CriteriaQuery, которые я видел, относятся к запросам SELECT.Есть ли способ создания безопасных типов запросов DELETE с помощью API JPA 2 или Hibernate?

Ответы [ 4 ]

7 голосов
/ 22 октября 2012

Будет доступно в версии JPA 2.1 .

7 голосов
/ 23 мая 2011

Не думаю, что это возможно.

Цитируется из http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_public1:

API Criteria в настоящее время не поддерживает операции обновления и удаления

5 голосов
/ 07 июля 2011

Это невозможно напрямую, но вы можете использовать безопасные для типов запросы DELETE и UPDATE через расширение Querydsl JPA. Querydsl использует JPQL для внутреннего использования, но предоставляет безопасный интерфейс для построения запросов.

Я поддерживаю Querydsl, поэтому этот ответ предвзят.

0 голосов
/ 06 апреля 2011

не уверен, что вы можете сделать это с критериями, но можно создать HQL с помощью массовых операций, таких как удаление или обновление.Посмотрите на этот пример из книги «Постоянство с Hibernate» (стр. 535):

Query q = session.createQuery(
   "delete CreditCard c where c.stolenOn is not null"
);
int updatedCreditCards = q.executeUpdate();

С наилучшими пожеланиями!

...