2016-08-11 12 views
0

を持っているとき、私はJPAに新しいです。選択クエリEntityクラスは、子クラス(組み込みID)

私は下のリンクでJPA基準APIを使用する方法を発見した: JPA Criteria API with multiple parameters

述語のためのコードは次のとおりです。

Root<CustomerEntity > customerEntity = cq.from(CustomerEntity.class); 
List<Predicate> predicates = new ArrayList<Predicate>(); 
//Adding predicates in case of parameter not being null 
    if (param1 != null) { 
     predicates.add(
       qb.equal(customerEntity.get("fieldName"), param1)); 
    } 

しかし、私の顧客エンティティクラスは、組み込みID(複合主キーを持っています私は、このシナリオではJPA基準APIを使用することができます

は、すべての埋め込みIDであるか)

オブジェクト値は検索にも必須です(クエリの選択)?あなたは2つの段階しなければならない

答えて

1

は通常

predicates.add(
      qb.equal(customerEntity.get("id"), embeddableId)); 

のような述語を作成し、あなたの組み込み可能なオブジェクトに

をイコールとハッシュコードを実装するアップデート あなたはせずに、オブジェクト全体で検索することはできませんすべての値を入力します。ただ1つのプロパティを検索するには、パスを通って比較してください。

predicates.add(
      qb.equal(customerEntity.get("id").get("property1"), embeddableId.getProperty1())); 

希望すると便利です。

+0

こんにちは、私は私が埋め込まれたIDオブジェクトのすべての値を設定しない場合は、データベースからすべての結果セットを取得することはできませんよ。私は選択されたクエリ(検索)のためにフィールドをオプションにする必要があります。これは可能ですか? – firstpostcommenter

関連する問題