Как использовать Enum в качестве параметров NamedQuery в JPA - PullRequest
5 голосов
/ 12 мая 2010

У меня есть Entity с атрибутом enum и пара на NamedQueries. Один из них NamedQueries имеет атрибут enum в качестве параметра, т.е.

SELECT m FROM Message m WHERE m.status = :status

Когда я пытаюсь выполнить запрос, я получаю следующую ошибку:

Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class my.package.Status for parameter status with expected type of class my.package.Status from query string SELECT m FROM Message m WHERE m.status = :status.

Я использую Toplink

Как это? Как бы я сделал JPA счастливым?

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Объекты Enum могут использоваться в качестве параметров запроса, как и любые другие объекты. Однако ваш запрос, вероятно, должен быть:

SELECT m FROM Message m WHERE m.status = :status

Также - добавили @Enumerated в определение сущности?

0 голосов
/ 12 мая 2010

Это ошибка: Ошибка сравнения Enum с параметром Binding . Я перетасовал параметры и запрос выполняется.

...