我正在使用JPA 2.級聯的使用= cascadeType和fetch = FetchType
我想知道以下內容。
什麼是限制插入,更新或刪除時 父項不父表中存在的最好方法。
我有以下實體場景
@Entity public class Employee { @OneToMany(mappedBy = "requester") private Set<Project> requestedProjects; @OneToMany(mappedBy = "approver") private Set<Project> approvedProjects; } @Entity public class Project @ManyToOne @JoinColumn(name = "EMPLOYEE_NUMBER", referencedColumnName = "EMPLOYEE_NUMBER") private Employee requester; @ManyToOne @JoinColumn(name = "APPROVER", referencedColumnName = "EMPLOYEE_NUMBER") private Employee approver; }
什麼是我的這件事情理解有限是cascade=cascadeType.ALL
使用不插入,如果父鍵不存在刪除。
MERGE
,PERSIST
和ALL
之間的區別是什麼?
- 而且當它是建議使用
fetch = FetchType
任何幫助是非常可觀的
Chris我對提取類型和懶惰提取有疑問。如果我有某種延遲加載,這已經是我的前端應用程序的一部分,即我不加載數據庫中的所有記錄,它基於應用程序中顯示記錄時的記錄分頁。我的疑問是,我是否還需要啓用抓取懶惰? – user75ponic
我不確定我是否理解這個問題。如果你已經啓用它,爲什麼你仍然需要啓用延遲獲取?懶惰的讀取類型設置在映射上,以防止參考實體在讀入父文件時自動讀入。如果您正在以其他方式閱讀孩子,閱讀父母仍然會導致JPA嘗試解決父母 - >孩子關係,除非他們被標記爲懶惰或未被映射。 – Chris
感謝Chris的詳細解釋。 – user75ponic