2013-09-04 3 views
1

Я задавался вопросом, как это сделать в JPA, если я хочу позвонить NamedQuery, хранящимся в сущности с разными настройками, например, для DESC или ASC для использования таким образом, как для параметров (setParameter()). Например, это не работает:JPA: параметр NamedQuery в строке запроса для коммутаторов

@NamedQuery(name = "Entry.findAll", query = "SELECT e FROM Entry e WHERE e.switch = :switch ORDER BY e.name :order) 

Это действительно единственный способ использовать два запроса, как:

@NamedQuery(name = "Entry.findAllDESC", query = "SELECT e FROM Entry e WHERE e.switch = :switch ORDER BY e.name DESC) 
@NamedQuery(name = "Entry.findAllASC", query = "SELECT e FROM Entry e WHERE e.switch = :switch ORDER BY e.name ASC) 

или генерировать строку запроса в коде?

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

+0

Возможные дубликаты + ответы: http://stackoverflow.com/questions/4120388/hibernate-named-query-order-by-partameter – Magnilex

ответ

0

NamedQuery - статический запрос. Вы не можете поставить динамическое значение запроса (например, ASC или DESC) в NamedQuery. Вы должны использовать DynamicQuery (то есть JPQL) или Native Query или Criteria, чтобы получить желаемый результат.

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