我在遇到新的子對象時無法讓合併級聯。 我已經有一組兒童的父對象(市)對象如何使JPA合併插入OneToMany關係的新子對象
@OneToMany(mappedBy = "parent", cascade = { CascadeType.ALL }, fetch=FetchType.LAZY)
public Set<Street> getStreets() {
return streets;
}
和子對象(街)引用
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="City", nullable=false)
public City getParentCity(){
return parentCity;
}
而且我運行的日常轉儲信息父進入數據庫。一切順利,直到JPA進入一條新街。當它給我一個EntityNotFoundException。我假設這意味着數據庫中沒有任何街道已經有了新的ID。從我讀過的是因爲孩子是交易的實際所有者,但我需要它來堅持新的對象,如果它遇到這個「EntityNotFound」異常
我沒有使用自動生成的主鍵,這是數據集中已存在的一個鍵。目前,我可以訪問在父對象上使用em.merge()的微服務。
我看到有一個選項可以刪除不再存在的對象(orphanRemoval);有沒有辦法添加新的?
感謝
這取決於您如何嘗試保存或合併集合和父級。正如你有雙向映射,你需要有雙向關聯,比如'parent.getChildren()。add(newChild);'和newChild.setParent(parent);' –
目前我只是調用em.merge()on父對象。有沒有辦法讓實體經理自動處理這個問題?就像它和孤兒一樣嗎? – mike
這個鏈接可能對你有一點幫助。 http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/ –