2016-06-01 12 views
0

Ich habe unten Methode, die wo Bedingung für meine Abfrage vorbereitet. Ich möchte hinzufügen, wo Bedingung auf Parent-Objekt, und untergeordnete Objekt ist meine Root.Hinzufügen der Bedingung für das übergeordnete Objekt, wenn das untergeordnete Objekt root ist. JPA Criteria API

Wie erreiche ich dies mithilfe von JPA Criteria API.

Unten ist mein existierender Code, derzeit ist die Bedingung für das Elternobjekt auskommentiert.

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())); 
} 

} 

Kann mir jemand dabei helfen? Ich bin neu in JPA Criteria API.

Antwort

1

Ich löste es unter Verwendung von unten Code, im Grunde Pfad ist das Attribut, das Sie vergleichen möchten. also von der Wurzel zum Attribut, das Sie vergleichen möchten, müssen Sie Pfad erstellen und dann können Sie es dem Prädikat hinzufügen.

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

Quelle altuure

Verwandte Themen