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")
我想知道是否可以在 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")