java - JPA:开关查询字符串中的 NamedQuery 参数

标签 java jpa entity jpa-2.0

我想知道如果我想调用存储在具有不同设置的实体中的NamedQuery,例如以类似于参数的方式使用订单DESC或ASC,我想知道如何在JPA中执行操作( 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 是静态查询。您不能将动态查询值(即 ASC 或 DESC)放入 NamedQuery 中。您应该使用 DynamicQuery(即 JPQL)或 Native QueryCriteria 来获取所需的输出。

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

相关文章:

java - Hibernate 在保存实体时抛出 TransientPropertyValueException

php - Symfony 的表单不可链接吗?

symfony - 如何访问 symfony2 中实体的存储库方法?

java - 如何为新的 WiFi 配置设置静态 IP?

java - Hibernate - 将 orderBy() 添加到 DetachedCriteria 如果不存在?

java - 方法接收更多数据类型的列表作为参数

java - Spring数据存储库查询包含的集合

java - 是否有替换 ClassPathXmlApplicationContext.getBean 的 Spring 注解?

java - 无法删除作为@OneToOne 关系目标的实体

java - JPA 一对一关系创建非唯一外键