orphanRemoval=true オプションについて多くの議論がありましたが、まだ孤児が残っていますが、私の問題に対する正しい答えが見つからないようです。
UniqueProperty クラスの List に OneToMany 関係を持つ Connector クラスがあります。
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true)
@LazyCollection(LazyCollectionOption.FALSE)
private List<UniqueProperty> uniqueProperties;
UniqueProperty には次の定義があります。
@Id
@Column(name = "id", length = 200, unique = true, nullable = false)
private String id;
private String name;
private String type;
@Column(unique=true)
private String value;
protected UniqueProperty(){}
PostgreSQL DB を使用しています。新しいコネクタを作成して UniqueProperty (name, valueA) を追加すると、connector_uniqueproperty テーブルに 1 行、uniqueproperty テーブルに 1 行が作成されます。以前と同じ ID (新しい休止状態セッション) で新しい Connector インスタンスを作成し、今回は一意のプロパティを追加しない場合、session.saveOrUpdate(connector) 呼び出しは関連する行を connector_uniqueproperty から削除しますが、関連する行はそのままにしますuniqueproperty テーブル (現在は孤立しています)。
なぜこれが起こるのかについて何か提案はありますか?