JPA:交换机的查询字符串中的NamedQuery参数

时间:2013-09-04 07:03:11

标签: java jpa entity jpa-2.0

我想知道如果我想在JPA中调用存储在具有不同设置的实体中的NamedQuery,例如订单DESC或ASC以类似于参数(setParameter())的方式使用。例如,这不起作用:

@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的编程风格几乎不可能。

1 个答案:

答案 0 :(得分:0)

NamedQuery是静态查询。您不能在NamedQuery中添加动态查询值(即ASC或DESC)。您应该使用DynamicQuery(即JPQL)或Native QueryCriteria来获得所需的输出。