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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

回首憶惘然 2023-04-13 10:52:14
在用 .jsp 中的數(shù)據(jù)填充表單支持 bean(狀態(tài))后,我嘗試將其添加到其父實(shí)體(員工)。不幸的是,這會(huì)導(dǎo)致 org.hibernate.TransientObjectException。按照某些線程中的建議將 CascadeType.ALL 添加到 @ManyToOne(擁有方,Status.java)沒(méi)有任何效果,這應(yīng)該是正確的。但是除了 CascadeType.ALL 之外,在 @OneToMany(引用端,Employee.java)上添加 fetch = FetchType.EAGER 可以解決問(wèn)題(如下面的代碼所示)。模型“雇員”@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ù)計(jì) @OneToMany 端的 CascadeType.ALL 就足夠了。但這導(dǎo)致HHH000346:托管刷新期間出錯(cuò) [org.hibernate.TransientObjectException:對(duì)象引用未保存的瞬態(tài)實(shí)例 - 在刷新前保存瞬態(tài)實(shí)例:....model.Status]另一方面,當(dāng)我另外使用 FetchType.EAGER 時(shí)異常消失了,這是我無(wú)法理解的。
查看完整描述

1 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

最有可能的:

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

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

employee.addStatus(newStatus);

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

employeeService.updateEmployee(employee);

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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