У меня есть два класса, ProductConfiguration и SubProduct.
Я хочу заменить субпродукты в конфигурации, что я делаю следующим образом:
productConfiguration.getSubProducts().clear();
productConfiguration.getSubProducts().addAll(newSubProducts);
При этом Hibernate пытается установить для идентификатора родителя (конфигурации продукта) значение NULL, а затем обновить строку в базе данных. Это терпит неудачу, так как родительский идентификатор является внешним ключом, и, следовательно, не обнуляется.
Отображение из ProductConfiguration на SubProduct:
<bag name="subProducts"
table="sub_product"
cascade="all-delete-orphan"
access="field"
lazy="false">
<key column="parent_id"/>
<one-to-many class="com.conscius.cpt.core.product.SubProduct"/>
</bag>
<many-to-one name="parentProduct"
class="com.conscius.cpt.core.product.ProductConfiguration"
column="parent_id"
access="field"
not-null="true"
cascade="none"/>