У меня проблема с Hibernate, когда он не вставляет все значения массива. Однако, если я изменю массив на список, он вставит все значения списка. Это мое отображение массива:
<component name="component" access="field">
<many-to-one name="parent" class="Parent" insert="false" update="false" fetch="join" column="id" access="field"/>
<array name="entries" table="component_entry" cascade="all-delete-orphan" access="field">
<key column="parent_id" not-null="true"/>
<index column="index" type="int"/>
<one-to-many class="ComponentEntry"/>
</array>
</component>
Мои классы выглядят так:
class Parent {
private Component component;
}
class Component {
private Parent parent;
private ComponentEntry[] entries;
}
class ComponentEntry {
private int id;
private Component parent;
private int valueOne;
private int valueTwo;
private double valueThree;
}
Если я добавлю 25 записей в экземпляр Component
и сохраню сущность Parent
, Hibernate создаст только один запрос на вставку. Теперь, если бы я изменил тип поля entries
на List
и обновил отображение следующим образом:
<component name="skills" access="field">
<many-to-one name="parent" class="Parent" insert="false" update="false" fetch="join" column="id" access="field"/>
<list name="entries" table="component_entry" cascade="all-delete-orphan" access="field">
<key column="parent_id" not-null="true"/>
<list-index column="index" type="int"/>
<one-to-many class="ComponentEntry"/>
</list>
</component>
Hibernate создаст 25 запросов на вставку. Мой вопрос: почему Hibernate не вставляет все значения при использовании массива?
Редактировать: я несколько раз гарантировал, что все значения в поле entries
равны , а не равны .