Сопоставление объекта в Hibernate с двумя списками, вызывающими проблемы - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь сохранить объект, который имеет 2 аналогичных списка, используя файл hbm.xml.Ниже мой объект модели и HBM:

public class MyClass {

...

    private List<MyType> list;

    private List<MyType> otherList;

...

}

Мой HMB для этого раздела выглядит следующим образом:

    <list name="list" cascade="all-delete-orphan"
        lazy="false">
        <key column="USER_ID" />
        <list-index column="index" />
        <one-to-many class="path.to.MyType" />
    </list>

    <list name="otherList" cascade="all-delete-orphan"
        lazy="false">
        <key column="USER_ID" />
        <list-index column="index" />
        <one-to-many class="path.to.MyType" />
    </list>

Однако, когда этот объект заполняется из базы данных, все, что я ожидаюбыть в «списке» также появляется в «другом списке».Я предполагаю, что мне не хватает простого изменения конфигурации, чтобы позволить hibernate правильно хранить эти 2 списка, но я не могу понять это.

Любая помощь?

1 Ответ

2 голосов
/ 10 мая 2011

<list> содержат одинаковое содержимое, потому что вы говорите Hibernate отображать один и тот же класс (path.to.MyType), используя один и тот же <key column="USER_ID"> в обоих случаях. Вы уверены, что не сделали ошибку в отображении Hibernate?

Концептуально, что Hibernate сделает для материализации этих коллекций, это запрос типа

SELECT m.* from MyType m where m.USER_ID = this.USER_ID

Если вы скажете Hibernate использовать один и тот же запрос для сопоставления list и otherList, как он может вернуть разные результаты для одного и того же запроса?

...