在运行时是否可以将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. 如何将WHERE子句添加到Android上的查询
- 6. 如何将WHERE子句添加到SELECT查询中?
- 7. 将子查询添加到连接
- 8. MongoDB findAndModify()添加查询更新子句
- 9. 在MySQL查询中添加WHERE子句
- 10. 添加WHERE子句使查询很慢
- 11. 如何将OrderBy添加到此LINQ语句中?
- 12. 带orderby子句的linq查询的返回类型不一致
- 13. 如何添加一个NOT子句到我的SQL查询
- 14. 添加子查询
- 15. 添加“和”和“或”子句通过rails查询界面查询
- 16. 动态地将参数添加到查询中的“IN”子句中?
- 17. 如何将WHERE子句添加到具有分组的EF查询中
- 18. 将语句添加到jsqlparser中的sql查询
- 19. 将where子句添加到IEnumerable选择
- 20. 将参数添加到where子句sql
- 21. LINQ - 使用OrderBy和GroupBy的子查询
- 22. LINQ的OrderBy子句导致
- 23. 添加到查询中的其他未指定字段
- 24. 如何将HQL子句(WHERE COUNT()<MAX_VAL)添加到复杂查询
- 25. Nedd Dinner pagginated list - 如何添加linq orderby子句dynamicaly?任何人?
- 26. 将条件语句添加到XPath查询
- 27. 如何将WHERE语句添加到此SQL查询
- 28. 将FirstOrDefault添加到我的查询中?
- 29. 笨:添加到where子句
- 30. 将DISTINCT添加到SQL子查询的位置
虽然是真的,“你不能改变/修改/添加关于什么在运行时动态地命名查询“,对于生成的底层SQL,这不是真实的。例如,考虑何时调用setMaxResults()或setFirstResult():您将通过添加一些限制和偏移量子句来修改实际查询。这只是为了说明在dbms中NamedQuery和编译查询之间没有严格的依赖关系。 – Jack 2016-09-01 12:59:40