我有以下表格:


PRODUCT(id_product,名称)
属性(id_property,名称)
PRODUCT_PROPERTIES(id_product,id_property)


(所有字段都不为空)

以及以下休眠映射:

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批注)?

最佳答案

答案由Dev Blanked在评论中给出。
这是解决方案:

@OneToMany(mappedBy="foo", orphanRemoval=true)

08-16 22:45