---
# System prepended metadata

title: Entity Issues

---

---
title: Entity Issues
tabs: Spring Boot, Data JPA, Lombok
---

## Entity 設計

## 雙向多對一

### 解決透過 JSON 格式取得物件時造成的無限迴圈問題
* 多方的參照物件使用 @JsonBackReference 註解
* 一方的參照物件使用 @JsonManagedReference 註解


### 多對一無法刪除

* 當使用 @ManyToOne，且 CascadeType = REFRESH 時，無法透過Many 方的 DELETE METHOD 刪除Many 方資料。
    * 原因: JPA Entities 不建議使用 Lombok 的 @Data 註釋 ( 因沒有相對應的例外處理註釋 )，如一方的 @Data 的 toString() 沒有將 Many 方的 List 忽略，進而導致 Many 方刪除時執行到 One 方的 ToString 出錯，而無法正常刪除。
    * so1: 將整合的註釋 @Data 拆解為個別註釋，並於 Many 的 List 加上 @ToString.Exclude。
    * sol2: Fetch Type 改為 LAZY，另外 @JsonBackReference 不能使用於集合物件上 ( List, Set etc... )，故若需要由 Many 方呈現 One 方資料，One 方須改使用 @JsonIgore。