JPA動的なクエリスプライシング

あなたが発生した場合にのみ、単純なCRUD使用春JPAの提供では、複雑な状況を動的にクエリを構築するために私たちを必要とします。ここでは、CriteriaBuilderを使用してクエリを構築する方法を見て。
コアコード:

CriteriaBuilder = entityManager.getCriteriaBuilder CriteriaBuilder();
CriteriaQuery <ロング>クエリ= criteriaBuilder.createQuery(Long.class);
ルート<注文> = query.fromルート(Order.class);
query.select(criteriaBuilder.count(root.get ( "ID")));
述語predicateA = criteriaBuilder.equal(root.get( "ID"),. 1);
query.where(predicateA);
ロングsingleResult entityManager.createQuery =(クエリ).getSingleResult()

呼び出しのEntityManager .getCriteriaBuilderは()CriteriaBuilderを取得します。CriteriaQuery、CriteriaUpdateとCriteriaDeleteを作成するために使用することCriteriaBuilder。類似した回数、最大、などのほかにも作成するCriteriaBuilderの関数です。前記のEntityManager @PersistenceContext注釈は、注射のために使用することができます。
CriteriaQueryを作成するためのコールcriteriaBuilder.createQuery。前記パラメータは、からCreateQueryクエリの戻り値の型です。
コールquery.from(Order.class)。エンティティクラスに対応したオーダーパラメータテーブルには、類似したからquery.from SQLステートメントは、それが注文SQLからメソッドを実行することと同じです。
コールは、マッピングを作成query.select。query.select(criteriaBuilder.count(root.get( "idが "))) 数(ID)を選択することと等価です。あなたはquery.select(ルート)を行う場合は*を選択することと等価です。
使用CriteriaBuilderがクエリ条件に述語を構築し、述語は、WHERE句のバック状態にあります。
query.where中で述語。
最後に、データを取得するクエリを実行します。
----------------
免責事項:この記事はCSDNブロガーが「道夕日、」オリジナルの記事で、BY-SAの著作権契約CC 4.0に従って、再現し、元のソースと、このリンクを添付してください声明。
オリジナルリンクします。https://blog.csdn.net/zhaoruda/article/details/80157975

おすすめ

転載: www.cnblogs.com/fengli9998/p/11880324.html
おすすめ