3

私は2つのテーブルを持っています。

// Accounts
@OneToMany(mappedBy="accounts", cascade=CascadeType.ALL)
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<Mails> mails;

// Mails
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="user_id" , referencedColumnName="id", insertable=false, updatable=false)
private Accounts accounts;

親行が削除されるときに、すべての子行の削除を整理するにはどうすればよいですか? テーブルに設定しようとしCascadeType.DELETE_ORPHANましたAccountsが、子行が存在する場合、親行を削除できません。

4

3 に答える 3

0

「mappedBy」プロパティは、反対側が関係を所有していることを示しているため、あなたの場合、メールはおそらくあなたが望むものではない関係を所有しています。

JPA カスケードは、リレーションシップの所有者から一方向にのみ機能します。

したがって、アカウントを削除するときにメールを削除する場合は、関係の所有者を切り替える必要があります。

//Accounts
@OneToMany(cascade=CascadeType.ALL)
private Set<Mails> mails;

//Mails
@ManyToOne(mappedBy="mails")
@JoinColumn(name="user_id" , referencedColumnName="id", insertable=false, updatable=false)
private Accounts accounts;
于 2013-06-13T00:59:41.050 に答える