2015-03-27 23 views
7

Ich frage mich, ob es möglich ist, Generics in den genannten Abfragen in Spring-Daten (mit jpa selbst) zu verwenden, ist es möglich, so etwas zu tun?Spring Data (JPA) - mit Generics in @Query

@NoRepositoryBean 
public interface EnumerationRepository<T extends Enumeration> extends JpaRepository<T,Integer> { 
    @Query("Select t.type from T t") 
    public List<String> selectTypes(); 
} 

Enumerationsklasse weggelassen ich aus Gründen der Einfachheit in der Enumeration-Klasse einige Felder dieses

@MappedSuperclass 
public abstract class Enumeration { 

    @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", length = 3) 
    private int id; 
    @Column(name = "type", nullable = false, unique = true, length = 30) 
    private String type; 

    // getters/setters .. etc 
} 

werden.

Versucht dies, aber offensichtlich klagt es, weil Klasse T nicht zugeordnet ist.

Der Punkt ist, weil ich wie 20+ Tabellen, die einige grundlegende Struktur teilen, und da ich Abfragen nur Daten aus Spalten extrahieren, nicht die gesamte Entität, wäre schön, einen Weg zu finden, die Abfrage in der "Eltern" -Repository und muss den Code nicht mehr als 20 Mal replizieren.

Antwort

13

Spring Data JPA 1.4 or higher Wenn verwendet, wird folgende Arbeiten:

@Query("Select t.type from #{#entityName} t") 
+0

es funktioniert, danke! – saljuama

+0

hat mir eine Menge Ärger erspart, danke Mann! –

Verwandte Themen