2016-04-01 43 views
2

私はエンティティへの汎用クエリにSpring Data JPA仕様を使用しています。これまでのところうまくいきました。これで、embeddedIdアノテーションで使用される複合キーでこれらを使用しようとすると、問題が発生しました。そこでここでは、オブジェクトがFooであるかどうかを調べるためにネストされたプロパティを使用する必要があり、id以上の条件を記述しようとしています。例えばid1。明細書において複合キー属性からSpring Data JPA仕様を構築できますか?

@Entity 
@Data 
public class Foo implements Serializable { 
    private static final long serialVersionUID = 1L; 
    /** The key. */ 
    @EmbeddedId 
    private FooKey id; 
} 

@Embeddable 
@Data 
public class FooKey implements Serializable { 
    private static final long serialVersionUID = 1L; 
    /** The key. */ 

    private String id1; 
    private String id2; 
} 

私は

@Override 
    public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder builder) { 
// get root type 
root.get(property).getJavaType() 

をやろうとしています。しかし、これは、この場合のように、ネストされた属性に対して動作しません。コンポジットキーのプロパティの述部を構築できる方法はありますか?均等の

+1

FWIW「春データJPA述語」のようなものはありません。これはJPA Criteria Predicateです。春のデータJPA!= JPA –

+0

訂正 –

答えて

3

例:

 @Override 
    public Predicate toPredicate(Root<Foo> root, CriteriaQuery<?> query, CriteriaBuilder builder) { 
    builder.equal(root.get("id").get("id1"),"my val"); 
+0

のおかげで感謝していたが、私が持っていた正規表現が間違っていて、本当に小道具を分割していないようだ:) –

関連する問題