2016-12-17 6 views
0

У меня есть проблема с JPA NamedQuery в сочетании с AttributeConverter.JPA NamedQuery с объектом в выражении WHERE, которое преобразуется с использованием AttributeConverter

Итак, у меня есть объект с полем xyz типа XYZ, который преобразуется с использованием AttributeConverter<XYZ, String>, поэтому значение хранится как VARCHAR в базе данных. Это хорошо работает. Но я не совсем уверен, о том, как запросить Entity.xyz с помощью NamedQuery:

@NamedQuery(name="Entity.testQuery", query="SELECT e FROM Entity e WHERE e.xyz=:xyz

Если я пытаюсь его таким образом, Hibernate сбои во время запуска. Так что это неправильно. Есть ли способ сообщить Hibernate сравнить значение «неотвернутого» (т. Е. String), например WHERE e.xyz=:xyzAsString?

С наилучшими пожеланиями Jonas

EDIT: Hibernate аварии, я думаю, потому что он пытается запросить e.xyz как JOIN с лица XYZ, который не существует. Так что, может быть, это ошибка (я на WildFly 9.2, которая использует Hibernate 4.3)

+0

Зачем ему падать? Покажите исключение и сообщения, которые вы получаете, так как кажется странным не сказать вам ничего. Запрос содержит параметр, поэтому ему нужно будет только тип при выполнении запроса. – Chris

ответ

0

Параметр должен быть типа XYZ, а не String. Используйте метод конвертера для получения соответствующего экземпляра XYZ для необходимого значения String.

+0

Сбой в спящем режиме во время развертывания, даже до того, как я попытаюсь выполнить запрос с заданным параметром. Я думаю, все именованные запросы анализируются во время запуска – JonasB

0

После добавления некоторых изменений в другие места проблема больше не возникает. Поэтому мой вывод о том, что он связан с преобразованным атрибутом как параметром, кажется неправильным.

Спасибо, тем не менее

 Смежные вопросы

  • Нет связанных вопросов^_^