私のアプリケーションでは、すべての顧客が複数のアカウントを持つことができます。私は、次のようなデータ構造(簡潔にするため省略たくさん)ありますJpa:更新する代わりに扶養家族を削除する
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@Id
@Column(length = 36, name = "CUSTOMER_ID", nullable = false, unique = true)
private String id;
@OneToMany
@JoinColumn(name = "OWNER_ID", referencedColumnName = "CUSTOMER_ID")
private List<Account> accounts;
}
@Entity
@Table(name = "ACCOUNT")
public class Account {
@Id
@Column(length = 36, name = "ACCOUNT_ID", nullable = false, unique = true)
private String id;
@Column(name = "OWNER_ID", nullable = false)
private String ownerId;
}
私は、このような
entityManager.remove(customer);
として、お客様を削除するためにJPAを使用した場合、それはとの関連ACCOUNT.OWNER_IDフィールドを更新しようとしますヌル。 OWNER_IDはNULL可能ではないため、JDBCExceptionをスローしてトランザクションをロールバックします。
私が達成する必要があるのは、関連するACCOUNT行が削除されることです(存在する場合)。どうやってやるの?私は
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
でそれを試みたが、それは動作を変更しません:まだヌルに更新しようとし
はあなたに
更新をありがとうございます。
'@OneToMany(orphanRemoval =" true ")'を試しましたか? –
私はすでにそれを試しましたが、それは問題を解決しませんでした:まだACCOUNT.OWNER_IDフィールドをnullで更新しようとしています。 – Androrider