SpringBoot2 JPA解決懶加載異常的問題
jpa解決懶加載異常
在我上一遍文章上進行行修改,SpringBoot2 實現(xiàn)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;
}
}
我大概實現(xiàn)了一下,具體的如果大佬找到更好的方法或者發(fā)現(xiàn)我的方法是錯的,希望各位大佬提醒一下!感謝!
補充: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
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新)
這篇文章主要介紹了IntelliJ?IDEA?2022.2.1最新永久激活破解教程(持續(xù)更新),小編測試這種激活工具也適用idea2022以下所有版本,本篇教程整理的比較詳細,匯總了idea各個版本的激活工具,激活方法多種多樣,大家選擇一種即可,感興趣的朋友跟隨小編一起看看吧2022-09-09
MyBatis攔截器如何自動設置創(chuàng)建時間和修改時間
文章介紹了如何通過實現(xiàn)MyBatis的Interceptor接口,在實體類中自動設置創(chuàng)建時間和修改時間,從而提高開發(fā)效率2025-02-02
利用synchronized實現(xiàn)線程同步的案例講解
這篇文章主要介紹了利用synchronized實現(xiàn)線程同步的案例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
SpringBoot integration實現(xiàn)分布式鎖的示例詳解
常規(guī)項目都是采用Redission來實現(xiàn)分布式鎖,進行分布式系統(tǒng)中資源競爭加鎖操作,偶然發(fā)現(xiàn)SpringBoot中的integration也實現(xiàn)多種載體的分布式鎖控制,下面我們就來看看具體實現(xiàn)方法吧2023-12-12
java后臺實現(xiàn)js關閉本頁面,父頁面指定跳轉或刷新操作
這篇文章主要介紹了java后臺實現(xiàn)js關閉本頁面,父頁面指定跳轉或刷新操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
使用原生JDBC動態(tài)解析并獲取表格列名和數(shù)據(jù)的方法
這篇文章主要介紹了使用原生JDBC動態(tài)解析并獲取表格列名和數(shù)據(jù),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08

