第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 FetchType.Eager 在雙向映射中阻止

為什么 FetchType.Eager 在雙向映射中阻止

回首憶惘然 2023-04-13 10:52:14
在用 .jsp 中的數(shù)據(jù)填充表單支持 bean(狀態(tài))后,我嘗試將其添加到其父實體(員工)。不幸的是,這會導(dǎo)致 org.hibernate.TransientObjectException。按照某些線程中的建議將 CascadeType.ALL 添加到 @ManyToOne(擁有方,Status.java)沒有任何效果,這應(yīng)該是正確的。但是除了 CascadeType.ALL 之外,在 @OneToMany(引用端,Employee.java)上添加 fetch = FetchType.EAGER 可以解決問題(如下面的代碼所示)。模型“雇員”@Entitypublic class Employee {@OneToMany(mappedBy = "employee", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)private List<Status> statusList = new ArrayList<Status>();public void addStatus(Status status) {    this.statusList.add(status);    status.setEmployee(this); }}模型“狀態(tài)”@Entitypublic class Status implements Comparable<Status> {@ManyToOne@JoinColumn(name = "employee_id")private Employee employee;}控制器@Controllerpublic class DashboardController {@PostMapping("addStatus")public String addStatus(@Valid @ModelAttribute("newStatus") Status newStatus Principal principal) {Employee employee = employeeService.getEmployeeByPosition(principal.getName());        employee.addStatus(newStatus);        employeeService.updateEmployee(employee); }}服務(wù)@Servicepublic class EmployeeService {public void updateEmployee(Employee employee) {    employeeRepo.save(employee); }}我預(yù)計 @OneToMany 端的 CascadeType.ALL 就足夠了。但這導(dǎo)致HHH000346:托管刷新期間出錯 [org.hibernate.TransientObjectException:對象引用未保存的瞬態(tài)實例 - 在刷新前保存瞬態(tài)實例:....model.Status]另一方面,當我另外使用 FetchType.EAGER 時異常消失了,這是我無法理解的。
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

最有可能的:

Employee employee = employeeService.getEmployeeByPosition(principal.getName());

這發(fā)生在事務(wù) 1中。

employee.addStatus(newStatus);

這里的實體已經(jīng)處于分離狀態(tài),如果不急切,LAZY加載將無法從這一點開始。

employeeService.updateEmployee(employee);

Transaction 2中,您正在嘗試(很可能是在內(nèi)部)merge,但該集合尚未延遲加載。有了EAGER它,合并就成功了。


查看完整回答
反對 回復(fù) 2023-04-13
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號