IBM OpenJPA NullPointerException в getResultList()

Я провел весь день, пытаясь заставить собственный SQL работать с JPA для устаревшего проекта миграции. Я упростил запрос до того, что должен работать.

Query query = localEm.createNativeQuery("SELECT ID FROM TABLE");
List results = query.getResultList(); 

Но я получаю NPE из кода JPA через query.getResultList():

NullPointerException в org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:328)

Это сводит меня с ума. Я просмотрел файл исходный код QueryImpl. Я использую IBM WebSphere (WSJPA 2.1.1-SNAPSHOT и OpenJPA 2.1.1-SNAPSHOT), поэтому номера строк не помогают, но не похоже, что в этой части кода для 2.2.0. Но я не вижу ничего плохого в их коде. Другие мои вызовы JPA с моим localEm (менеджер сущностей) работают нормально.

У кого-нибудь есть идея?


person djb    schedule 04.03.2013    source источник
comment
Каков тип и значение micAcc? Каков тип данных соответствующего столбца? Возможно, у вас проблема с отображением. Что произойдет, если вы удалите поле mic_acc из запроса?   -  person MicSim    schedule 04.03.2013
comment
micAcc — это строка, «D000001546», столбец — это CHAR (10) в базе данных и отображается как строка в сопоставлении. Удаление предложения WHERE по-прежнему приводит к NPE в getResultList().   -  person djb    schedule 04.03.2013
comment
пожалуйста, не обращайте внимания на эти первые три комментария, так как я начал вопрос о том, что query.setParameter() выдает NPE. Я удалил предложение WHERE в вопросе, так что теперь речь идет о том, чтобы getResultList выдавал NPE.   -  person djb    schedule 04.03.2013


Ответы (1)


Хорошо, я решил это.

Если я помещу код в свой удаленный компонент (Дао), он сработает. Если я помещу код в свой сеансовый компонент (который внедряет Dao), он не сработает.

Я предполагаю, что ссылка на EntityManager, вероятно, должна быть разорвана в какой-то момент при возврате из удаленного компонента.

Это была проблема EJB (или, скорее, мое плохое понимание проблемы EJB), однако NPE, выброшенные из кода OpenJPA, по-прежнему кажутся мне ошибкой.

person djb    schedule 06.03.2013