在運行時是否可以將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