在运行时是否可以将OrderBy子句添加到JPA命名查询中?将OrderBy子句添加到指定的查询
2
A
回答
2
命名查询由持久性提供处理创建的EntityManagerFactory时。您无法在运行时动态更改/修改/追加任何关于命名查询的任何内容。
如果您使用的是JPA 2.0,并且需要在运行时执行高性能动态查询的方法,则应该查看Criteria API。
1
来自Java EE 5文档:“用于指定Java持久性查询语言中的命名查询,该查询语言是元数据中表达的静态查询。查询名称的范围为持久性单元”。
就像它说的那样,它是静态的&您无法在运行时更改查询。 相反,使用自定义查询或如果排序元素是固定的,那么你可以使用注释;
字段:
@OrderBy(value="nickname")
List<Person> friends;
方法:
@OrderBy("nickname ASC")
public List<Person> getFriends() {...};
0
即使无法将order-by子句添加到指定的查询中,也可以提供参数orderBy。下面是一个完全有效的查询:
SELECT u FROM User u ORDER BY :orderBy
而且你要改变的东西,如订购:
query.setParameter("orderBy", "id");
相关问题
- 1. LINQ:将OrderBy添加到查询
- 2. 将子查询添加到子句时永不结束查询
- 3. QueryDSL - 添加子查询到FROM语句
- 4. 我想使用orderby子句构造一个查询。请指教
- 5. 如何将关键字添加到ActiveRecord查询的FROM子句
- 6. 使用QueryOver将相关的子查询添加到Select语句
- 7. 如何将WHERE子句添加到Android上的查询
- 8. 如何将WHERE子句添加到SELECT查询中?
- 9. 将子查询添加到连接
- 10. 添加where子句linq查询
- 11. 添加WHERE子句使查询很慢
- 12. MongoDB findAndModify()添加查询更新子句
- 13. 在MySQL查询中添加WHERE子句
- 14. 将子查询添加到已经很庞大的查询中
- 15. 如何从相关子查询where子句添加到列
- 16. 将语句添加到mysql并将搜索查询添加到新页面?
- 17. 如何将OrderBy添加到此LINQ语句中?
- 18. 带orderby子句的linq查询的返回类型不一致
- 19. 将可选的OrderBy添加到已编译的实体框架LINQ查询
- 20. 如何添加一个NOT子句到我的SQL查询
- 21. 将temp colunm添加到具有取决于order子句的值的mysql查询
- 22. 添加子查询
- 23. 添加“和”和“或”子句通过rails查询界面查询
- 24. 将查询保存在变量中,然后添加where子句?
- 25. 动态地将参数添加到查询中的“IN”子句中?
- 26. 将可选子句添加到使用Jena的SPARQL查询中ARQ
- 27. 如何将WHERE子句添加到具有分组的EF查询中
- 28. LINQ中的子查询上的Random Orderby
- 29. 在一个循环中添加了多个OrderBy语句的Linq查询
- 30. Mysql添加一个AND子句到这个查询
虽然是真的,“你不能改变/修改/添加关于什么在运行时动态地命名查询“,对于生成的底层SQL,这不是真实的。例如,考虑何时调用setMaxResults()或setFirstResult():您将通过添加一些限制和偏移量子句来修改实际查询。这只是为了说明在dbms中NamedQuery和编译查询之间没有严格的依赖关系。 – Jack 2016-09-01 12:59:40