springboot2.x整合spring-data-jpa的问题
2018-12-06 13:28
351 查看
原文链接:http://www.cnblogs.com/wangxiayun/p/10076232.html
今天使用springboot整合spring-data-jpa遇到一些问题,直接使用JpaRepository的getOne()方法是会报错的。报错信息为:org.hibernate.LazyInitializationException: could not initialize proxy - no Session。在SpringBoot1.xx版本应该使用findOne()方法根据主键来查找对象。
这里是findOne和getOne的区别:
getOne API:返回对具有给定标识符的实体的引用。当我查询一个不存在的id数据时,直接抛出异常,因为它返回的是一个引用,简单点说就是一个代理对象。
findOne API:按ID查找实体。当我查询一个不存在的id数据时,返回的值是null.
详细对比参考这里。
但是新版本的JPA中,已经不存在用ID查找实体的findOne方法了,取而代之的是:findById().get()方法。
spring配置如下:
spring: datasource: username: root password: 123456 url: jdbc:mysql://172.16.80.34:3307/jpa?useUnicode=true&characterEncoding=UTF8 driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: # 更新数据表结构 ddl-auto: update show-sql: true open-in-view: true
实体类:
package com.wang.springboot06jap.entity; import javax.persistence.*; //使用JPA注解配置映射关系 @Entity @Table(name = "tbl_user") //配置表名,若省略则默认表名是user public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键 private Integer id; @Column(name = "lastName",length = 20) //若省略就是属性名 private String username; private String email; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
Reposity:
public interface UserRepository extends JpaRepository<User,Integer> { }
调用JPAReposity的方法:
@Controller
public class UserController {
@Autowired
UserRepository userRepository;
@GetMapping("/user/{id}")
@ResponseBody
public User getUser(@PathVariable("id") Integer id){
User user = userRepository.findById(id).get();
// System.out.println(userRepository.getOne(id));
//
return user;
}
}
转载于:https://www.cnblogs.com/wangxiayun/p/10076232.html
相关文章推荐
- Springboot2.x新版整合SpringDataJpa中Hibernate默认创建的mysql表为myisam引擎修改为InnoDB问题
- Spring,SpringMVC,Jpa,SpringData 整合的问题
- SpringBoot整合Spring Data Jpa
- SpringBoot整合Spring Data Jpa(快速入门,自定义查询)
- SpringBoot-整合-SpringData jpa -简单实用(8)
- springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离一套增删改查,分页+解决跨域问题
- SpringBoot整合Spring Data JPA
- springboot干货——(七)springboot整合Spring Data JPA
- Spring boot整合JPA:添加spring-boot-starter-data-jpa 依赖报错 解决方法
- springboot2.0 多数据源整合问题 At least one JPA metamodel must be present! at
- spring boot 整合spring data jpa
- Springboot整合springdata JPA
- Spring Boot + Spring Data JPA 项目整合开发记录(持续更新)
- SpringBoot整合Spring Data JPA、MySQL、Druid并使用Mockito实现单元测试
- Spring Boot:整合Spring Data JPA
- Spring Boot整合Spring Data JPA过程解析
- 使用spring-data-jpa+spirngboot整合swagger+vuejs实现一套简单的增删改查demo
- IDEA+Gradle+SpringBoot+SpringDataJPA+lambok(lombok有点问题)(一)
- springboot整合spring data jpa 动态查询
- springboot后台服务搭建(三 整合mysql、spring-data-jpa)