2014-03-26 48 views
0

我有一個查詢不會產生任何結果,即使肯定有與查詢相對應的底層數據庫中的數據。查詢由hibernate運行,我想通過在mysql中直接運行查詢來驗證它。有人可以幫助我從休眠轉換到SQL,以便我可以看到查詢是否產生任何結果?模擬mysql中的休眠查詢

這裏是Hibernate查詢的Eclipse控制檯說的是正在運行:

select 
drugword0_.name as name1_12_2_, 
concepts1_.word as word1_12_4_, 
drugconcep2_.rxcui as rxcui2_13_4_, 
drugconcep2_.rxcui as rxcui1_10_0_, 
atoms3_.rxcui as rxcui3_10_5_, 
atoms3_.rxaui as rxaui1_39_5_, 
atoms3_.rxaui as rxaui1_39_1_, 
atoms3_.rxcui as rxcui3_39_1_, 
atoms3_.str as str2_39_1_ 
from drugwords drugword0_ 
left outer join drugwordsconsoJunction concepts1_ on drugword0_.name=concepts1_.word 
left outer join drugconcepts drugconcep2_ on concepts1_.rxcui=drugconcep2_.rxcui 
left outer join rxnconso atoms3_ on drugconcep2_.rxcui=atoms3_.rxcui where drugword0_.name=? 

如何轉換是Hibernate查詢到的MySQL數據庫的SQL查詢工作的語法?爲什麼你認爲我的hibernate查詢沒有返回任何結果? hibernate映射是否設置不正確?

爲了幫助人們理解什麼是hibernate,我從spring mvc hibernate應用程序中發佈了一些代碼。 注意:爲了保持這篇文章簡潔,我已經上傳了一些相關的代碼到文件共享網站。您可以通過單擊以下鏈接查看代碼:
DrugWord實體的代碼是at this link
DrugConcept實體的代碼是at this link
DrugAtom實體的代碼是at this link
在MySQL中創建底層數據表的代碼是at this link
填充底層數據表的代碼is at this link
其中一個表is at this link的數據。
另一張表is at this link的數據。 (這是一個很大的文件,可能需要一些時間才能加載。)

爲了幫助人們可視化底層數據,我將包含查詢的前2個結果的打印屏幕,其中顯示瞭如下基礎表中的數據:

+0

可能的[Hibernate show real SQL]重複(http://stackoverflow.com/questions/2536829/hibernate-show-real-sql) –

回答

0

奧姆斯有時不得不對如何把他們的查詢語言到SQL,這可能會導致各種問題,從慢查詢奇數或無結果的,而獨到的見解。

因此,我建議您激活查詢日誌(請參閱herehere),這將是實際發送到服務器的SQL。

+0

謝謝您花時間回答。您發送的鏈接不能解釋以前從未使用過此技術的人的關鍵步驟。你能寫出明確的指示給那些剛接觸hibernate和MySQL的人嗎? – CodeMed

+0

實際上,這兩個鏈接的答案還包含指向Hibernate幫助的鏈接,其中解釋了配置日誌記錄:http://docs.jboss.org/hibernate/core/4.1/manual/en-US/html/ch03.html#configuration-logging。 .. – fvu

+0

親愛的downvoter,我能做些什麼來改進我的答案? – fvu