当前位置: 首页 > 编程笔记 >

SpringBoot2 JPA解决懒加载异常的问题

仲孙子辰
2023-03-14
本文向大家介绍SpringBoot2 JPA解决懒加载异常的问题,包括了SpringBoot2 JPA解决懒加载异常的问题的使用技巧和注意事项,需要的朋友参考一下

jpa解决懒加载异常

在我上一遍文章上进行行修改,SpringBoot2 实现JPA分页和排序分页

实体类上改:

@Entity
@Table(name = "employee")
@JsonIgnoreProperties(value={"hibernateLazyInitializer", "department"})
public class Employee {
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Integer empId;
 private String lastName;
 private String email;
 @Temporal(TemporalType.DATE)
 private Date birth;
 @Temporal(TemporalType.TIMESTAMP)
 private Date createTime;
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "dept_id")
 private Department department;
 public Integer getEmpId() {
  return empId;
 }
 public void setEmpId(Integer empId) {
  this.empId = empId;
 }
 public String getLastName() {
  return lastName;
 }
 public void setLastName(String lastName) {
  this.lastName = lastName;
 }
 public String getEmail() {
  return email;
 }
 public void setEmail(String email) {
  this.email = email;
 }
 public Date getBirth() {
  return birth;
 }
 public void setBirth(Date birth) {
  this.birth = birth;
 }
 public Date getCreateTime() {
  return createTime;
 }
 public void setCreateTime(Date createTime) {
  this.createTime = createTime;
 }
 public Department getDepartment() {
  return department;
 }
 public void setDepartment(Department department) {
  this.department = department;
 }
}

控制器验证

import java.util.Iterator;
@RestController
public class EmployeeController {
 @Autowired
 private EmployeeService employeeService;
 @GetMapping("/emp")
 public Page<Employee> showPage(@RequestParam(value = "page") Integer page, @RequestParam(value = "size") Integer size){
  System.out.println("分页: page:"+page+"; size:"+size);
  return employeeService.getPage(page, size);
 }
 @GetMapping("/emp_sort")
 public Page<Employee> showSortPage(@RequestParam(value = "page") Integer page, @RequestParam(value = "size") Integer size){
  System.out.println("排序分页: page:"+page+"; size:"+size);
  Page<Employee> list = employeeService.getPageSort(page, size);
  Iterator<Employee> it=list.iterator();
  while(it.hasNext()){
   System.out.println("value:"+(it.next()).getDepartment().getDeptName());
  }
  return list;
 }
}

我大概实现了一下,具体的如果大佬找到更好的方法或者发现我的方法是错的,希望各位大佬提醒一下!感谢!

补充:SpringBoot jpa 使用懒加载时,报异常:session失效

报异常:

could not initialize proxy - no Session

1、在方法上加@Transactional 注解,失败

2、在application.yml 文件加上jpa.properties.open-in-view: true 失败

3、在ResourceServerApplication.java 启动文件中加上:

 @Bean
 public OpenEntityManagerInViewFilter openEntityManagerInViewFilter() {
   return new OpenEntityManagerInViewFilter();
 }

成功解决~

总结:

要解决no session 问题需要:

配置文件中加jpa.properties.open-in-view: true同时在启动文件中加@Bean

以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。

 类似资料:
  • 本文向大家介绍tomcat加载jar异常问题的分析与解决,包括了tomcat加载jar异常问题的分析与解决的使用技巧和注意事项,需要的朋友参考一下 现象描述: 项目使用springboot启动一个web项目,在启动阶段看到console中出现了异常“1.10.3-1.4.3\hdf5.jar  系统找不到指定的文件”,虽然这些异常不影响项目的正常运行,但作为一个严谨的技术人员,看到这些异常就像见到

  • svg-sprite-loader加载图标异常问题 正常的图标 加载异常的图标 请问是什么原因? 无

  • 现在有一个下拉列表,需要渲染的数据为十几万条,每次渲染的时候都会很卡顿,我想优化渲染性能,考虑采用懒加载的形式,先对数据获取接口进行分页处理,每次在判断快滚动到底部的时候,再加载下一页数据,加载完成之后,拼接旧数据 + 新数据 组成要渲染的数据,再赋值给下拉框进行渲染,但是这种形式有一个问题是:当滚动到最后面的时候,这时候需要渲染的数据量也很多,会造成dom过多,页面性能也会有问题,请问我该如何优

  • 我有一个问题,就是基于hasMany关系从数据库中获取数据并将其发送到Larave中的api。在下面的代码中,Laravel没有给我客户id=$id的产品。我不知道为什么,我不能在$query旁边发送$id。如果我把号码写在“我有很好的安全套,但我需要自动拿。 所有api代码 先谢谢你。

  • 集成threejs项目后有警告,页面加载不出来。重新刷新后又能正常加载了。 每次第一次点击时加载不出来,重新刷新才能正常加载。 [.WebGL-00006E7410268000] GL_INVALID_FRAMEBUFFER_OPERATION: Framebuffer is incomplete: Attachment has zero size. 看到有文章说由于WEBGL 帧缓冲渲染异常,需

  • 本文向大家介绍通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题,包括了通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题的使用技巧和注意事项,需要的朋友参考一下 懒加载:也叫延迟加载,即在需要的时候进行加载,随用随载。 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,时间过长,会出