다중 모듈 애플리케이션에서 두 개의 다른 모듈로부터 두 개의 엔티티 클래스가 있습니다. 하나의 엔티티는 다른 엔티티에 단방향 일대일 관계가 있습니다.모듈 애플리케이션에서 JPA/Hibernate 일대일 캐스케이드 제거
주요 기업 "노래는"모듈 노래 코어에서이며는 다음과 같이 정의되어 :
@Entity
public class Song {
@Id(strategy = GenerationType.IDENTITY)
private int id;
private String name;
}
그리고 "SongLyrics"라는 다음 개체 모듈에서이다 "노래 가사"하는 같은 것을 정의 :
@Entity
public class SongLyrics {
@Id(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne
private Song song;
@Column(nullable = false, length=1024)
private String lyrics;
}
SongLyrics 엔티티 또는 최종 응용 프로그램에서 사용할 수 있거나 사용할 수없는 옵션 "노래 가사"모듈에서이기 때문에, 함께있는 관계는 "노래"실체는 단방향입니다.
이제 "노래"엔티티가 삭제 될 때마다 "SongLyrics"엔티티를 제거하고 싶습니다. 그러나 현재 "SongLyrics"엔티티는 "고아"로 남아 있으며 "Song"엔티티 만 삭제됩니다.
통찰력을주십시오. 감사.
작은 수정 :'@ OneToOne'은 '와 같은 foregin 키 기반 일대일 관계를 만듭니다. –
axtavt
귀하의 제안에 대해 @Stefan 및 @axtavt에게 감사드립니다. 노래에 FK가 기본 키이기도 ą SongLyrics를 업데이트하겠습니다. @Stefan이 강조 표시된대로 Song에서 SongLyrics와는 아무런 관련이 없습니다. 이는 주로 모듈에 걸쳐 있기 때문입니다. 이것이 바로 hibernate (또는 JPA 제공자)가 "계단식"효과를 전달할 수 없었던 이유입니다. 두 번째 및 세 번째 제안에 대해 Stefan에게 감사드립니다. 이 문제를 처리하기 위해 Spring AOP를 사용하는 것에 대해 숙고하고 있었지만 괜찮은 데이터베이스 트리거를 생성 할 수있는 이식성있는 방법이 있다면 말이다. –