2016-04-01 9 views
2

Ich verwende Spring Data JPA-Spezifikationen für generische Abfragen an meine Entitäten. Bisher hat es gut funktioniert. Jetzt trat das Problem auf, wenn ich versuche, diese auf zusammengesetzten Schlüsseln zu verwenden, die über eingebettete ID Annotation verwendet werden. Also hier muss ich eine geschachtelte Eigenschaft verwenden, um abzufragen, die sagen, wenn das Objekt Foo ist und ich versuche, ein Kriterium über die ID zu schreiben. id1 zum Beispiel.Können wir Spring Data JPA-Spezifikation aus einem zusammengesetzten Schlüsselattribut erstellen

@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; 
} 

In der Beschreibung versuche ich

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

Aber das funktioniert nicht für verschachtelte Attribute wie in diesem Fall zu tun. Gibt es eine Möglichkeit, Prädikate für Eigenschaften im zusammengesetzten Schlüssel zu erstellen.

+1

FWIW Es gibt nicht so etwas wie ein "Spring Data JPA Prädikat"; Dies ist ein JPA-Kriterienprädikat. Spring Data JPA! = JPA –

+0

yup danke für die korrektur –

Antwort

3

Beispiel Equal:

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

yup danke war das nur versuchen, aber scheint der regex ich hatte war falsch und nicht wirklich die requisiten geteilt :) fand das gerade heraus –

Verwandte Themen