JPA-запрос с openJPA работает только как "собственный" SQL, но не при преобразовании в JPQL или с критериями JPA
У меня есть запрос SQL и сопоставление классов. Используя openJPA, если запрос сделан как @NamedNativeQuery, он работает нормально, возвращая соответствующий класс и ожидаемый результат. Если он преобразуется в JPQL @NamedQuery, он всегда возвращает исключение NoResultException для метода getSingleResult. Я попробовал также критерии JPA, но он просто не работает, по крайней мере, не во всех средах. Я не могу воспроизвести проблему локально, она возникает только в тестовой системе. Локально все подходы работают нормально.
Я думаю, что это проблема конфигурации, но я ничего не нашел.
SQL: SELECT * FROM MY_REL_TABLE map WHERE map.TYPE =? 1 AND map.REGION_ID =? 2
JPQL: ВЫБЕРИТЕ m ИЗ MyRelationClass m ГДЕ m.type=:type AND m.region =:region
У кого-нибудь есть идеи, что может быть не так?
IBM openJPA, Websphere 8.0
1 ответ
Я не могу воспроизвести проблему локально, она возникает только в тестовой системе.
Вы подключаетесь к одной и той же базе данных в обеих средах? Если нет, то возможно ли, что в вашей локальной базе данных нет правильных данных?
Вы можете включить трассировку OpenJPA SQL, чтобы увидеть, на что переводится JPQL:
openjpa.Log=SQL=trace
Также установите следующее свойство, чтобы увидеть значения параметров:
openjpa.ConnectionFactoryProperties=PrintParameters=true