Я унаследовал немного кода Java, который использует Hibernate.Некоторые из людей, использующих этот код, теперь сообщают, что повсеместно получают исключения NullPointerException.
Я смог отследить это и обнаружил, что когда мы выполняем запрос, который извлекает список объектов из базы данных, который имеет список объектов (которые извлекаются из другой таблицы), Hibernate кажетсяоставлять дыры в списке (значения NULL).Таким образом, список может выглядеть примерно так:
Object
Object
NULL
Object
Код, который мы используем для извлечения информации из базы данных:
List<PrinterGroup> groups =
this.getSession().createQuery( "from PrinterGroup" ).list();
И затем внутри каждой группы принтеров есть списокФильтры со значениями NULL в них.
Хотя я мог бы обойти и найти каждый экземпляр, где мы перебираем этот список и добавить проверку NULL, я чувствую, что это исправление ошибки, и должен быть способсказать Hibernate не тянуть нулевые значения в.
EDIT:
- Мы используем Hibernate 3.2.2
EDIT2:
Таким образом, база данных казалась запутанной.Отношение PrinterGroup -> Filter является отношением один ко многим.Таким образом, у PrinterGroups есть список фильтров.Проблема заключается в том, что список фильтров содержит нулевые значения, когда он выходит из базы данных (кстати, в базе данных нет нулевых значений), а список выглядит так, как указано выше.
EDIT3:
Вот релятивистский picese для отображения в PrinterGroup HBM
<subclass name="PrinterGroup" discriminator-value="PG">
<list name="filters"
lazy="true"
table="PG_FILTER"
inverse="false"
cascade="all-delete-orphan">
<key>
<column name="PG_ID" not-null="false"/>
</key>
<index column="LISTPOSITION"/>
<one-to-many class="Filter"/>
</list>
А фильтр - довольно простое отображение POJO.