2016-06-01 16 views
0

私は以下のメソッドを用意しています。 親オブジェクトと子オブジェクトの条件をどこに追加したいのですか?子オブジェクトがrootの場合、親オブジェクトの条件を追加する。 JPA Criteria API

JPA Criteria APIを使用してこれを達成するにはどうすればよいですか。

以下は私の既存のコードです。現在のところ、親オブジェクトの条件がコメントアウトされています。

private void prepareSearchCriteria(
    Map<String, Object> filters, 
    CriteriaBuilder builder, 
    Root<Employee> employee, 
    List<Predicate> predicates) { 

if (filters.containsKey("employeeName")) { 
    predicates.add(builder.equal(employee.get("employeeName"),filters.get("employeeName").toString())); 
} 

if (filters.containsKey("enp.deptName")) { 
    // How do add this condition ? 
    // predicates.add(builder.equal(employee.get("employeeName"),filters.get("enp.deptName").toString())); 
} 

} 

誰でも助けてくれますか?私はJPA Criteria APIを初めて使用しています。

答えて

1

私は以下のコードを使用して解決しました。基本的にPathは比較したい属性です。ルートから属性を比較する場合は、パスを作成してから述語に追加する必要があります。

if (filters.containsKey("enp.deptName")) { 
    Path<Object> path = employee.join("employee").get("deptName"); 
    predicates.add(builder.equal(path, filters.get("employee.deptName"))); 
} 

ソース altuure

関連する問題