Spring 数据 (JPA) - 在@Query 中使用泛型

Spring Data (JPA) - using generics in @Query

我想知道是否可以在 spring 数据的命名查询中使用泛型(我自己使用 jpa),是否可以这样做?

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

枚举class就是这个

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

为了简单起见,我省略了枚举中的一些字段class。

试过了,但显然它会抱怨,因为 class T 没有映射。

关键是因为我有 20 多个共享一些基本结构的表,并且因为我需要查询来仅从列中提取数据,而不是整个实体,所以最好找到一种方法来获取查询"parent" 存储库,而不必将代码复制 20 多次。

如果使用 Spring Data JPA 1.4 or higher,以下将起作用:

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