2014-01-14 10 views
7

Ich habe abstrakte Klasse:Abfrage nach Typ in Spring Data JPA

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
public abstract class A { 
    ... 
} 

und wenige erstreckt Klassen, wie:

@Entity 
public class B extends A { 
    ... 
} 

Ich habe auch dritte Einheit:

@Entity 
public class C { 

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    private A objectA; 
    ... 
} 

Und die Frage ist, wie kann ich Spring Data JPA Finder im C-Entity-Repository erstellen, um nur Objekte abzufragen, die A mit dem gewünschten Typ erweitern?

+0

Add lesen nur Eigenschaft für Ihre Scheidungs ​​oder versuchen 'wählen s aus Probe s wo TYPE (s) =: Baumuster zur – MariuszS

+0

mögliches Duplikat von [Java/JPA | Abfrage mit angegebenem geerbtem Typ] (http://stackoverflow.com/questions/4884249/java-jpa-query-with-specified-inherited-type) – MariuszS

+0

Als erstes habe ich mich nach Feder-Daten erkundigt und zweitens muss ich nicht nachfragen Typ (c) aber Typ (c.objectA) –

Antwort

7

Sie können den Namen des Diskriminatorwert verwenden, die Sie definiert haben „type“

@Entity 
@Inheritance(strategy = InheritanceType.JOINED) 
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) 
@Table(name = "abc") 
public abstract class Abc { 
.... 

------------------------------------------- 

@Query("select a from Abc a where type = ?1") 
List<Abc> findByType(String typeValue); 
Verwandte Themen