2

私が見た唯一のCriteriaQueryの例は、SELECTクエリ用です。JPA2またはHibernateAPIを使用して、タイプセーフなDELETEクエリを作成する方法はありますか?

4

4 に答える 4

7

それは不可能だと思います。

http://blogs.oracle.com/ldemichiel/entry/java_persistence_2_0_public1から引用:

Criteria APIは現在、更新および削除操作をサポートしていません

于 2011-05-22T22:01:31.997 に答える
7

JPA2.1バージョンで利用可能になります。

于 2012-10-22T01:24:09.340 に答える
5

直接は不可能ですが、QuerydslJPA拡張機能を介してタイプセーフなDELETEおよびUPDATEクエリを使用できます。Querydslは内部でJPQLを使用しますが、クエリ構築のためのタイプセーフな流暢なインターフェイスを提供します。

私はQuerydslのメンテナーなので、この答えには偏りがあります。

于 2011-07-07T06:59:25.860 に答える
-6

Criteriaで実行できるかどうかはわかりませんが、削除や更新などの一括操作でHQLを作成することは可能です。「Hibernateを使用した永続性」(535ページ)の次の例を確認してください。

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

よろしくお願いします!

于 2011-04-06T09:07:17.697 に答える