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

网友投稿 484 2023-02-15

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 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 showSortPage(@RequestParam(value = "page") Integer page, @RequestParam(value = "size") Integer size){

System.out.println("排序分页: page:"+page+"; size:"+size);

Page list = employeeService.getPageSort(page, size);

Iterator 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、在ResourceServerApplicayaXsNfCtion.java 启动文件中加上:

@Bean

public OpenEntityManagerInViewFilter openEntityManagerInViewFilter() {

return new OpenEntityManagerInViewFilter();

}

成功解决~

总结:

要解决no session 问题需要:

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:app内置小程序(app支持小程序)
下一篇:app 内运行小程序方案(app开发微信小程序)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~