2

次のテーブルがあります。

  • PRODUCT (id_product, name)
  • PROPERTY (id_property、名前)
  • PRODUCT_PROPERTIES (id_product、id_property)

(すべてのフィールドは null 可能ではありません)

そして、次の休止状態のマッピング:

class Product {
    @Id
    private Integer id;

    @OneToMany(mappedBy="product")
    @Cascade({CascadeType.ALL})
    private Set<ProductProperties> productProperties = new HashSet<ProductProperties)(0);

    (...)    
}

「productProperties」フィールドに行を追加または削除して製品クラスを更新すると、PRODUCT_PROPERTIES テーブルの行が正しく更新されます。

問題は、「productProperties」が null または空の場合、Hibernate が ConstraintViolationException をスローすることです。

「productProperties」を空にする必要がある場合があるため、この問題に対する適切な解決策 (@ZeroToMany アノテーションなど) はありますか?

4

1 に答える 1

1

答えは、コメントでDev Blankedによって提供されます。これが解決策です:

@OneToMany(mappedBy="foo", orphanRemoval=true)
于 2013-09-19T20:05:20.760 に答える