2015-03-27 33 views
7

Bahar verisinde (jpa kullanarak) adlandırılan sorgularda jenerik kullanmanın mümkün olup olmadığını merak ediyorum, böyle bir şey yapmak mümkün mü?Spring Data (JPA) - @Query'deki jenerikleri kullanarak

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

Sayım sınıfı bu

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

Ben basitlik uğruna Sayım sınıfında bazı alanları ommitted ediliyor.

Bunu denedim ancak açıkçası, T sınıfının haritalanmadığından şikayet ediyor.

Bunun nedeni, bazı temel yapıları paylaşan 20'den fazla tabloya sahip olduğumdan ve yalnızca sütunlardan gelen verileri almak için sorgulara gereksinim duyduğumdan, sorguyu almak için bir yol bulmak güzel olurdu. "parent" deposu ve kodu 20+ kez çoğaltmak zorunda kalmamak.

cevap

13

Spring Data JPA 1.4 or higher kullanılıyorsa, aşağıdaki çalışır:

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

çalıştığını, teşekkürler! – saljuama

+0

Bana çok fazla sorun çıkardı, teşekkürler dostum! –

İlgili konular