Eclipselink에서 일대 다 관계로 매핑되는 개인 소유의 엔터티를 삭제할 수 없습니다. 개인 소유의 엔터티를 일대 다 컬렉션에서 제거하고 부모에 대한 참조를 NULL로 설정 한 다음 부모를 저장하면 개인 소유의 엔터티가 데이터베이스에서 제거되지 않습니다. 그러나 개체에서 제거되고 나머지 세션 동안 개인 소유의 엔터티가 실제로 제거 된 것처럼 보입니다.개인 소유의 일대 다 항목을 EclipseLink에서 제거하지 않음
여기에 하나의 매핑
@OneToMany(mappedBy="parent", cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch=FetchType.EAGER)
@PrivateOwned // should prevent orhpans, but doesn't.
List<PrivatelyOwnedEntity> privatelyOwnedEntities;
내가 캐스케이드 모든 추가 시도하고, 또한 @CascadeOnDelete을 추가 한
, 하나는 영향이 없을 것이라고 생각 것 그 모든 조합이고, 그것은하지 않았다.
otherside : I는 (널 = 거짓)를 첨가 JoinColumn 또한 @ManyToOne 주석 및 이들 annotaitons의 존재/제거의 모든 조합을 제거하는 시도
@ManyToOne
private Parent parent;
. 어떤 변화도 영향을 미치지 않았습니다.
제거 코드 :
public boolean removePrivatelyOwnedEntity(int i) {
PrivatelyOwnedEntity privatelyOwnedEntityToBeRemoved = this.privatelyOwnedEntities.get(i);
//privatelyOwnedEntityToBeRemoved.setParent(null);
return this.privatelyOwnedEntities.remove(privatelyOwnedEntityToBeRemoved);
}
코드가 업데이트 :
projectManager.saveProject(project);
//so this privatelyOwnedEntity is deep within this object.
// Its project.site.siteMap.parents.privatelyOwnedEntities.
// SiteMap is embedded in Site.
// On save it calls a dao, and the dao's abstract class handles the update
// as shown below using Springs JpaTemplate
저장 코드 :
public T save(T object) {
return getJpaTemplate().merge(object);
}
부모에게 읽는 데 사용 된 코드를 표시하고 변경하고 유지할 수 있습니까? – Chris
물론 위의 추가 코드를 추가했습니다. – Ceniza