如何修改hibernate生成的SQL查询?
Posted
技术标签:
【中文标题】如何修改hibernate生成的SQL查询?【英文标题】:How can I modify the generated SQL query of hibernate? 【发布时间】:2011-03-03 21:31:28 【问题描述】:我有点好奇,有没有办法修改hibernate
的核心,这样我就可以自定义生成的SQL
query
。例如,在生成的查询中添加功能以使用connect by prior
(oracle) 或我想要自定义的任何其他子句。
【问题讨论】:
【参考方案1】:起初,这些问题总是给我敲响了警钟。您已被警告...
AFAIK,休眠使用所谓的dialects 进行特定优化。也许您可以扩展现有的 Oracle 方言之一或提供您自己的方言。
【讨论】:
【参考方案2】:您可以通过继承 Oracle dialect 来创建您的自定义方言。在我看来,这应该是更简单的方法。我真的不认为你想弄乱 Hibernate Core。
【讨论】:
+1 表示“我真的不认为你想弄乱 Hibernate Core”......我真的不想! :P【参考方案3】:CONNECT BY
等 DBMS 特定的功能通常通过发出本机 SQL 查询在 Hibernate 应用程序中使用。它们的结果可以映射到实体,因此您可以像使用常规 HQL 查询一样使用它们。
尝试让 Hibernate 生成它们将是矫枉过正。
另请参阅:
Chapter 18. Native SQL【讨论】:
以上是关于如何修改hibernate生成的SQL查询?的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate 在访问关联实体的 id 时生成 SQL 查询