Вопрос

Мы используем Hibernate Annotations 3.4.0GA и Hibernate Core 3.3.2.GA (также известные как текущие стабильные версии) для базы данных Oracle

У нас есть сопоставление «один ко многим» с base= 1, которое отлично работало долгое время, но на прошлой неделе мы обнаружили несколько записей в базе данных, в которых столбец индекса содержал значение 0, что вызвало всевозможные проблемы.

Итак, мой вопрос: знает ли кто-нибудь способ получить значение 0 в столбце индекса отношения «один ко многим», когда оно отображается с базой= 1? Возможно, связано с использованием дженериков или MappedSuperclass.

Обратите внимание, что код довольно сложный, потому что также задействовано наследование.

Ниже приведены соответствующие части классов:

родовое слово

Фактические классы наследуются от них и предоставляют конкретные классы для параметров типа. Они отображаются как Entity. Они также определяют столбцы идентификаторов и версий, а также множество других атрибутов и ссылок, но ничего не имеют отношения к имеющемуся отображению.

Это было полезно?

Решение

Я знаю, что прошло почти два года, но я наткнулся на это, когда искал решение той же проблемы.Мы используем hbm через файлы xml, поэтому я не совсем уверен, поможет ли это. В нашем случае проблема заключалась в обратном отображении.Если контроль над списком (и индексом) находился на стороне элемента списка («многие»), как в вашем случае, у нас возникла проблема.Перемещение вверх решило эту проблему.Не знаю, как это делается с аннотациями.

Еще одним источником ошибки может быть фактическая установка «элементов» в свой объект AbstractReihung.Hibernate использует прокси-объекты для отложенной загрузки свойств.Если вы устанавливаете целую новую коллекцию вместо изменения существующей, вы перезаписываете прокси-объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top