在mysql中模拟一个hibernate查询

时间:2014-03-26 21:35:44

标签: java mysql sql spring hibernate

我有一个查询没有产生任何结果,即使基础数据库中肯定有与查询对应的数据。查询是由hibernate运行的,我想通过直接在mysql中运行查询来验证它。有人可以帮助我从hibernate转换为SQL,以便我可以看到查询是否产生任何结果?

以下是eclipse控制台所说的正在运行的hibernate查询:

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的起点,我发布了一些来自我的spring mvc hibernate app的代码。 注意:为了简化此帖子,我已将一些相关代码上传到文件共享网站。您可以点击以下链接查看代码:
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个查询结果,如下所示:

1 个答案:

答案 0 :(得分:0)

ORM有时对如何将查询语言翻译成SQL有一个相当独特的观点,这可能导致各种问题,从慢查询到奇数或缺席结果。

因此,我建议您激活查询日志(请参阅herehere),这将是实际发送到服务器的SQL。