최대 절전 모드로 작업 할 때, 양방향 관계의 양측의 일관된 상태를 유지하는 것은 사용자의 책임입니다. 또한, 관계를 유지할 때 Hibernate는 소유 측 (mappedBy
이없는 측)을보고 있으므로 optional=false
이 없어도 코드가 올바르지 않을 것입니다.
당신은 consistensy을 보장하기 위해 다음과 같은 방법을 사용할 수 있습니다 setChildren()
이 경우 가시성에
class Parent {
...
public void addChild(Child c) {
children.add(c);
c.setParent(this);
}
}
public Parent parentService(List<Child> childList) {
...
for (Child c: childList) {
parent.addChild(c);
}
...
}
잘못된 호출을 방지하기 위해 제한 할 수 있습니다.
마찬가지로 캐스 케이 딩이 없으며 부모와 동일한 트랜잭션 내에 하위 항목을 유지하지 않는 것이 이상합니다.
! 나는 양쪽에 cascade = {CascadeType.ALL}을 추가했다. 그리고 나는 당신이 "부모와 같은 거래 내에서 아이들을 존속하지 않는다는 것이 이상하게 보입니다"라고하는 것이 무엇을 의미하는지 이해하지 못합니다. 내가 부모를 유지할 때 자동으로 그와 그의 컬렉션의 모든 요소를 유지할 수 있습니까? (어린이) – Kossel
컬렉션의 요소는 계단식을 구성한 경우에만 자동으로 유지되므로 '계단식'이 없으면 이상하게 보입니다. – axtavt