2015-03-27 31 views
7

Mi chiedo se sia possibile utilizzare i generici nelle query denominate nei dati di primavera (utilizzando jpa me stesso), è possibile fare qualcosa di simile?Spring Data (JPA) - utilizzo di generici in @Query

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

classe di enumerazione viene questa

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

ho omesso alcuni campi nella classe di enumerazione per ragioni di semplicità.

Provato questo, ma ovviamente si lamenta perché la classe T non è mappata.

Il punto è perché ho come 20+ tabelle che condividono alcune strutture di base, e poiché ho bisogno di query per estrarre solo i dati da colonne, non l'intera entità, sarebbe bello trovare un modo per ottenere la query nel repository "padre" e non dover replicare il codice più di 20 volte.

risposta

13

Se si utilizza Spring Data JPA 1.4 or higher, il seguente funziona:

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

funziona, grazie! – saljuama

+0

Mi ha salvato un sacco di problemi, grazie amico! –

Problemi correlati