목표는 소유자가 삭제 될 때 종속 파일을 모두 제거하는 것입니다. 다음과 같은 클래스가 있습니다 :소유자 엔티티의 링크가없는 JPA에서 종속성을 어떻게 지정합니까?
@Entity
class Dependent {
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY, optional = false)
@Column(name = "OWNER")
private Owner _owner;
}
@Entity
class Owner {
...
}
현재 구현에서 종속성은 소유자가 삭제 된 후에도 여전히 존재합니다.
Owner는 Dependent에 대한 링크가 없으므로 변경할 수 없으므로 @Dependent annotation 또는 cascade = DELETE를 사용할 수 없습니다.
JPA는 이러한 "역 종속성"을 지원합니까? 또 다른 질문은 _owner 필드가 삭제되는 동안 optional = "false"가 보장된다는 것입니다.
소유자 클래스를 수정할 수 없습니다. JPA는 종속 클래스에서 종속성을 지정하는 옵션을 제공하지 않습니다. 그래서 "optional = 'false'"는 무엇입니까? – oakjumper
'optional = false'는 매핑을 담당하는 쪽을 선언합니다. 두 클래스 모두에서 여전히 매핑이 필요합니다. 소유자 클래스를 변경할 수 없으면 원시 쿼리를 사용하고 모든 작업을 수동으로 수행해야합니다. 매번 캐시를 플러시하는 것을 잊지 마십시오. –
"소유자 클래스를 수정할 수 없습니다"라는 문제가 있습니다. 이것이 당신이 풀어야 할 문제입니다. 소유자 클래스를 변경하거나 해결 방법을 디버깅하는 데 몇 주를 소비하는 것이 더 복잡한 지 여부를 결정해야합니다. 또는 HBM 파일로 소유자 클래스를 매핑 할 수도 있습니다. Spring을 사용하는 경우 주석을 이전 XML 구성과 쉽게 섞을 수 있습니다. –