SpringBoot2.X集成JPA踩坑
2020-02-02 12:19
681 查看
SpringBoot2.X集成JPA踩坑
JpaRepository中的findOne()方法
findOne()使用示例
许多教程在SpringBoot集成JPA的时候,都会用到JpaRepository中的findOne()方法,如下所示:
@Override public User findById(Integer id){ return userRepository.findOne(id); }
User类:
public class User { private Integer userId; private String userName; private String password; private String phone; //get/set函数以及构造函数省略
UserRepository类:
import com.jialin.websitedemo.model.User; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository<User,Integer>{ }
问题:
我们先去看一下源码:
public interface QueryByExampleExecutor<T> { <S extends T> Optional<S> findOne(Example<S> var1); <S extends T> Iterable<S> findAll(Example<S> var1); <S extends T> Iterable<S> findAll(Example<S> var1, Sort var2); <S extends T> Page<S> findAll(Example<S> var1, Pageable var2); <S extends T> long count(Example<S> var1); <S extends T> boolean exists(Example<S> var1); }
可以看到findOne需要传入Example对象,而不是Integer或者String
而在SpringBoot1.5的环境下:
T findOne(ID id);
因此我们也了解了为什么用findOne会报Inferred type ‘S’ for type parameter ‘S’ is not within its bound; should extend 'com.jialin.websitedemo.model.User 的错误了
解决方法:
- 用findById(id).get()替代findOne(id)
- 用getOne(id)替代findOne(id)
扩展
自定义JPA查询方法命名规则
有一篇博客对于命名规则解释的较为全面,包括上图也是出自该博客:jpa方法名命名规则.
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Spring boot2.x中集成H2数据库代码实例
- Springboot+Kotlin+Jpa集成项目
- springboot2.x集成swagger的方法示例
- Springboot2.x新版整合SpringDataJpa中Hibernate默认创建的mysql表为myisam引擎修改为InnoDB问题
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
- Spring Boot(六):Spring Boot 集成 hibernate & JPA
- spring boot 添加扫包 集成 jpa
- spring-boot集成JPA
- spring-boot集成spring-data-jpa
- spring boot集成velocity及使用layout和2.X的toolbox功能
- SpringBoot2.0 基础案例(09):集成JPA持久层框架,简化数据库操作
- RabbitMQ(三) SpringBoot2.x 集成 RabbitMQ
- Spring Boot集成JPA的Column注解命名字段无效的问题
- SpringBoot2.x集成Apache Shiro并完成简单的Case开发
- SpringBoot 集成JPA
- Spring Boot 系列(九)数据层-集成Spring-data-jpa
- 从零开始学spring-boot(2)-集成spring-data-jpa
- spring boot 简单集成 mybatis、druid(阿里巴巴连接池)、redis、jpa
- 【实验一 】Spring Boot 集成 hibernate & JPA
- 从零开始学spring-boot(2)-集成spring-data-jpa