Spring JPA Repository中的CrudRepository

时间:2017-07-11 12:12:20

标签: java spring spring-boot spring-data-jpa

我试图了解在Spring Boot中使用JPA Repository

我能够使用以下DAO执行列表操作

@Repository
public interface CountryManipulationDAO extends CrudRepository<CountryEntity, Long>{

    @Query("Select a from CountryEntity a")
    public List<CountryEntity> listCountries();

由于CountryEntity主键为char。我对在DAO类

中使用Long感到困惑

由于

1 个答案:

答案 0 :(得分:3)

spring-data中的Repository接口有两个泛型类型参数;要管理的域类以及域类的id类型。

因此第二个类型参数表示主键的类型。

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
    <S extends T> S save(S entity);
    T findOne(ID primaryKey);
    Iterable<T> findAll();
    Long count();
    void delete(T entity);                                                                                                 
    boolean exists(ID primaryKey);      
}

当你调用一个不使用实体id的函数时,不会进行类型匹配,也不会遇到问题。比如在你的情况下。

另一方面,在使用使用findOne(ID)exists(ID)delete(ID)findAll(Iterable<ID>)等ID的操作时,您会遇到问题。

有关存储库的更多信息,请查看文档here