亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

JPA - 保存方法尋找聯接表而不是更新記錄

JPA - 保存方法尋找聯接表而不是更新記錄

千萬里不及你 2022-05-21 17:02:44
我有一個 RESTful 端點,根據記錄是否已經存在,將使用 JPA 的.save()方法插入新記錄或更新數據庫中的現有記錄。我遇到的問題是,當嘗試更新現有記錄時,JPA 將嘗試訪問不存在的表,employee_department. 我想這是因為在我的Employee實體上我與實體有@ManyToOne關系Department。僅當我嘗試將所有Employee model數據(從 POST 請求發送的數據)映射到Employee entity. 我會得到一個錯誤,即數據庫中沒有名為employee_department. 相反,如果我創建一個擴展 JPAfindByEmail(employee.getEmail())的方法EmployeeRepository,并嘗試將該數據直接保存回數據庫,則不會出現錯誤。model -> entity我的問題是,與僅從數據庫返回記錄并保存相比,在嘗試保存之前映射可能會丟失什么?這是來自client -> controller -> service -> mapper然后返回到客戶端的數據流。POST 請求中的客戶端 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);    }員工控制器 -> 員工服務@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正在“更新”的內容直接來自數據庫,那么一切都像魅力一樣。
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

上的@OneToMany注釋EmployeeEntity.ManagedDepartments沒有指定mappedBy屬性,這是雙向關系在“一”側所必需的??磥磉@種關系確實是雙向的,所以應該是


@OneToMany(mappedBy = "manager")

private Set<DepartmentEntity> ManagedDepartments;

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


查看完整回答
反對 回復 2022-05-21
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號