3

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 テーブル (現在は孤立しています)。

なぜこれが起こるのかについて何か提案はありますか?

4

0 に答える 0