如何修改hibernate生成的SQL查询?

Posted

技术标签:

【中文标题】如何修改hibernate生成的SQL查询?【英文标题】:How can I modify the generated SQL query of hibernate? 【发布时间】:2011-03-03 21:31:28 【问题描述】:

我有点好奇,有没有办法修改hibernate的核心,这样我就可以自定义生成的SQLquery。例如,在生成的查询中添加功能以使用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 查询

如何获取 JPA 生成的 SQL 查询?

如何修改 ServiceStack.OrmLite 生成的 SQL?

如何生成ibatis 动态sql

如何用hibernate直接进行SQL语句查询

Hibernate...如何进行数据库/SQL 查询?