Java - Hibernate не вставляет все значения массива - PullRequest
3 голосов
/ 14 апреля 2020

У меня проблема с 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 равны , а не равны .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...