回答
不,你不能。 HQL和Criteria API的要點是根據實體和它們之間的關聯來查詢對象模型。
我不會同意這一說法。 ORM只是HQL和Criteria API的特性之一。 Criteria API與ORM沒有多大關係。 –
@SumeetJindal:所以,當你在做'criteria.createAlias(「category.products」,「category」);',如果你沒有一個帶有toMany關聯的Category實體,你期望它如何工作一個產品實體? –
我不關心關聯。我想要像操作 –
首先很容易注意到Criteria API通常被用來替代HQL來構建動態查詢(「HQL非常強大,但是一些開發人員更喜歡使用面向對象的API動態構建查詢,而不是構建查詢字符串「reference link)。
其次,Hibernate是一個對象/關係(數據庫)持久性實現。爲了使用 ,我們需要定義其對象應映射到目標數據庫表(實體)中的類。
對於標準API是用於使用域類的Hibernate會話獲得:
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
會話對象使用從「貓」類到它的相應的表(可能在名爲「貓」的映射數據庫)。
因此,最終沒有實體類和它們的映射,沒有會話對象。沒有Session,沒有Criteria對象。
準則需要知道需要查詢的類(Cat.class)。
這可以幫助嗎? http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform/5/html/Hibernate_Core_Reference_Guide/persistent-classes-dynamicmodels.html –
在給定的鏈接中解釋的技術解釋聽起來很棒,第一次。但它有許多缺點。首先你的代碼不是「類型安全的」,你不能在編譯時檢查Map的值(它們的類型)是否真的對應你希望映射的實體表。其次,作爲後果,您可能會遇到許多通用運行時異常。最後他們說該功能目前是實驗性的,並且可能會在未來發生變化。目前它不穩定,我會試一試 – arthur
@Sumeet Jindal,一個主要的問題是,正如已經解釋的那樣,「Criteria」API需要Object的.class類來查詢。在動態地圖爲「實體模式」的情況下,Criteria不知道選擇哪個類/實體,因爲只有可用的類型是「MAP」。 – arthur
你怎麼能說hibernate你想應用哪個類critera?
所以你必須在createcriteria(Entity.class)中傳遞實體類的名字。
而你...標準提供了豐富的功能,這將減少你的代碼。
但是請注意......所有的事情都有積極的消極的一面。
標準也有一些負面的...
所以..要小心。根據您的應用相關規範使用
- 1. 如何使用Hibernate Criteria對象獲取實體或類名稱
- 2. 使用Hibernate Criteria API查詢實體沒有特定值的多對多關聯
- 3. Hibernate Criteria API
- 4. 如何使用Hibernate Criteria Query選擇子級實體?
- 5. 使用Criteria API在Hibernate中選擇沒有父項的記錄
- 6. Hibernate Criteria API與JPQL
- 7. JPA/Hibernate Criteria API JOIN
- 8. Criteria API組合2實體
- 9. 用Hibernate Criteria API讀取
- 10. 使用Hibernate Criteria API編寫HQL子句
- 11. 如何使用Hibernate Criteria API引用父表?
- 12. Hibernate Criteria API等價於「elements()」
- 13. 用於Hibernate搜索的Criteria API
- 14. Java Hibernate Criteria select子類
- 15. EntityManager.find無法找到實體,但使用Criteria API確實
- 16. Hibernate Criteria - 如何將連接結果限制爲單個實體類型?
- 17. 使用Hibernate Criteria + join加入
- 18. 從Hibernate Criteria
- 19. 實現Hibernate搜索後Hibernate Criteria棄用warrning
- 20. Hibernate Criteria API - 訪問加入的屬性
- 21. 使用自連接和NHibernate Criteria API查詢重寫實體
- 22. 使用JPA Criteria-API
- 23. 使用JPA Criteria-API
- 24. 如何通過NHibernate Criteria API檢索唯一實體?
- 25. 如何在Hibernate中重用Criteria對象?
- 26. 如何在JOIN中使用JPA Criteria API
- 27. Hibernate group by criteria
- 28. (懶惰)使用Hibernate Criteria API的左外連接
- 29. Hibernate查詢的實體類
- 30. 使用Criteria API刪除NHibernate集合使用Criteria API
自己回答的問題:如何在不知道實體和實體屬性類型的情況下實現類型安全? – Thomas
按類型安全我的意思是在編譯時驗證查詢。字符串查詢不能在編譯時檢查。 –
我們知道,但是如何驗證查詢而不知道您是否獲得了正確的實體以及實體是否具有您在查詢中訪問的字段? – Thomas