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

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

JPA - 保存方法尋找聯(lián)接表而不是更新記錄

JPA - 保存方法尋找聯(lián)接表而不是更新記錄

千萬(wàn)里不及你 2022-05-21 17:02:44
我有一個(gè) RESTful 端點(diǎn),根據(jù)記錄是否已經(jīng)存在,將使用 JPA 的.save()方法插入新記錄或更新數(shù)據(jù)庫(kù)中的現(xiàn)有記錄。我遇到的問(wèn)題是,當(dāng)嘗試更新現(xiàn)有記錄時(shí),JPA 將嘗試訪問(wèn)不存在的表,employee_department. 我想這是因?yàn)樵谖业腅mployee實(shí)體上我與實(shí)體有@ManyToOne關(guān)系Department。僅當(dāng)我嘗試將所有Employee model數(shù)據(jù)(從 POST 請(qǐng)求發(fā)送的數(shù)據(jù))映射到Employee entity. 我會(huì)得到一個(gè)錯(cuò)誤,即數(shù)據(jù)庫(kù)中沒(méi)有名為employee_department. 相反,如果我創(chuàng)建一個(gè)擴(kuò)展 JPAfindByEmail(employee.getEmail())的方法EmployeeRepository,并嘗試將該數(shù)據(jù)直接保存回?cái)?shù)據(jù)庫(kù),則不會(huì)出現(xiàn)錯(cuò)誤。model -> entity我的問(wèn)題是,與僅從數(shù)據(jù)庫(kù)返回記錄并保存相比,在嘗試保存之前映射可能會(huì)丟失什么?這是來(lái)自client -> controller -> service -> mapper然后返回到客戶端的數(shù)據(jù)流。POST 請(qǐng)求中的客戶端 JSON{  "id": 109,"isActive": true,"manager": null,"firstName": "string","middleInitial": null,"lastName": "string","department": {  "id": 101},"jobTitle": {  "id": 1001},"email": "g","skypeName": "g","isManager": false}客戶端 -> 員工控制器@RestController@RequestMapping("/emps")public class EmployeeController {    @Autowired    EmployeeService employeeService;    @RequestMapping(method = {RequestMethod.POST, RequestMethod.PUT})    public Employee createOrUpdateEmployee(@RequestBody Employee employee) {        return employeeService.storeOrUpdate(employee);    }員工控制器 -> 員工服務(wù)@Servicepublic class EmployeeService {    @Autowired    private EmployeeRepository employeeRepository;    @Autowired    EmployeeMapper employeeMapper;    public Employee storeOrUpdate(Employee employee) {        EmployeeEntity employeeEntity = employeeMapper.modelToEntity(employee);        EmployeeEntity savedEmployeeEntity = employeeRepository.save(employeeEntity);        Employee employeeModel = employeeMapper.entityToModel(savedEmployeeEntity);        return employeeModel;    }Employee正在“更新”的內(nèi)容直接來(lái)自數(shù)據(jù)庫(kù),那么一切都像魅力一樣。
查看完整描述

1 回答

?
largeQ

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

上的@OneToMany注釋EmployeeEntity.ManagedDepartments沒(méi)有指定mappedBy屬性,這是雙向關(guān)系在“一”側(cè)所必需的。看來(lái)這種關(guān)系確實(shí)是雙向的,所以應(yīng)該是


@OneToMany(mappedBy = "manager")

private Set<DepartmentEntity> ManagedDepartments;

如果關(guān)系實(shí)際上是單向的,那么它將被映射到一個(gè)輔助表,就像您的 JPA 提供程序在錯(cuò)誤情況下所尋找的那樣。此外,在實(shí)踐中是否實(shí)際查找該表取決于特定實(shí)體對(duì)象的詳細(xì)信息以及您如何操作它們,這似乎是合理的。


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

添加回答

舉報(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)