我想知道如果要调用存储在具有不同设置的实体中的NamedQuery时如何在JPA中进行操作,例如用于命令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几乎是不可能的编程风格。

最佳答案

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

关于java - JPA:开关的查询字符串中的NamedQuery参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18607396/

10-14 11:20