时间: 2020-08-23|34次围观|0 条评论

在撸SpringBoot2.0+的时候,JpaRepository中的findOne()传id报错

Inferred type 'S' for type parameter 'S' is not within its bound; 

SpringBoot 1.+的版本JpaRepository为

@NoRepositoryBeanpublic interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {    <S extends T> S save(S var1);    <S extends T> Iterable<S> save(Iterable<S> var1);    T findOne(ID var1);    boolean exists(ID var1);    Iterable<T> findAll();    Iterable<T> findAll(Iterable<ID> var1);    long count();    void delete(ID var1);    void delete(T var1);    void delete(Iterable<? extends T> var1);    void deleteAll();}

SpringBoot2+版本的JpaRepository为

@NoRepositoryBeanpublic interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {    List<T> findAll();    List<T> findAll(Sort var1);    List<T> findAllById(Iterable<ID> var1);    <S extends T> List<S> saveAll(Iterable<S> var1);    void flush();    <S extends T> S saveAndFlush(S var1);    void deleteInBatch(Iterable<T> var1);    void deleteAllInBatch();    T getOne(ID var1);    <S extends T> List<S> findAll(Example<S> var1);    <S extends T> List<S> findAll(Example<S> var1, Sort var2);}

新版本获取findOne()方法可用类似方法解决

  @Test   public void findOneTest(){        Product product = new Product();        product.setCategoryId(1);        Example<Product> example = Example.of(product);        Optional<Product> productOptional = respository.findOne(example);        if (productOptional.isPresent()) {            Product productResult =   productOptional.get();            System.out.println(productResult.toString());        } else {            // handle not found, return null or throw            System.out.println("no exit!");        }    }

文章转载于:https://www.jianshu.com/p/9936ba98da5a
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《SpringBoot2.0+的SpringDataJpa中的findOne()变化
   

还没有人抢沙发呢~