1
私は、一方向の多くの一つにマッピング)(マージ使用してJPA内の1つの関係に多くを削除
@Entity
public class Item implements Serializable {
private Integer id;
private Double amount;
private Country origin;
@ManyToOne(optional=true)
@JoinColumn
public Country getOrigin() {
return this.origin;
}
}
@Entity
public class Country implements Serializable{
private String code;
private String desc;
}
レッツ以下の関係は私が使用してnullにそれを更新することで関係を削除しようとしていますオプションであると言っています以下のコード
Country country = null;
//item is detached
item.setOrigin(country);
em.merge(item);
しかし、関係が削除されていないことが判明しました。 しかし、country
がNULLでなく、システムがDB内の関係を更新できる場合、このコードは正常に機能します。 nullの場合、単にフィールドを無視します。 希望の結果を得るために、どの設定を変更できるかを指摘できますか?
P.S.私はエンティティCountry
を削除したくないのですが、それらの関係を削除するだけです。
実際に 'setOrigin'があると仮定すると、これはうまくいくはずです。おそらく 'em.flush()'を試して、あなたが期待しているものが得られるかどうかを確認する必要があります。 – beerbajay
多分疑問な質問ですが、セッターはどのように見えますか? – Firo
私はcascade = Cascade.MERGEがこの場合に役立つと思います。 @ManyToOne(オプション= true、カスケード=カスケード.MERGE) –