0
我在多模塊應用程序中有兩個不同模塊的兩個實體類。一個實體在另一個實體之間具有單向一對一關係。在模塊化應用程序中JPA /休眠一對一級聯刪除
主要實體「宋」是從一個模塊歌核心,它的定義是這樣的:
@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」實體,只要刪除「Song」實體。但現在發生的情況是,「歌詞」實體被留作「孤兒」,只有「歌曲」實體被刪除。
請給出你的見解。謝謝。
小修正:'@ OneToOne'創建一個基於一對一關係的外鍵,就像''一樣。 –
axtavt
2011-03-28 09:00:22
感謝@Stefan和@axtavt的建議。 我會更新SongLyrics,以便FK to Song也是主鍵。 但正如@Stefan強調的那樣,歌曲與SongLyrics之間仍然沒有任何關係,主要是因爲它們跨越了各個模塊。這就是爲什麼hibernate(或任何JPA提供者)不能傳播「級聯」效應的原因。 感謝Stefan對第二和第三個建議。我正在思考如何使用Spring AOP來處理這個問題,但是如果有任何可移植的方法來創建數據庫觸發器,那也可以。 – 2011-03-29 03:34:45