【发布时间】:2017-09-23 22:45:07
【问题描述】:
我有一个带有注释@Formula 的字段的Java 实体,其中执行一个SQL 查询,其中包含一些针对Firebird 数据库的特定函数。 现在我必须迁移到 Oracle 数据库,并且我需要替换 @Formula 中的 SQL 代码。 有没有办法做到这一点?我可以以某种方式扩展 Hibernate @Formula 以便在运行时更改注释的值吗? 谢谢
【问题讨论】:
标签: hibernate
我有一个带有注释@Formula 的字段的Java 实体,其中执行一个SQL 查询,其中包含一些针对Firebird 数据库的特定函数。 现在我必须迁移到 Oracle 数据库,并且我需要替换 @Formula 中的 SQL 代码。 有没有办法做到这一点?我可以以某种方式扩展 Hibernate @Formula 以便在运行时更改注释的值吗? 谢谢
【问题讨论】:
标签: hibernate
您可以通过稍微不同的方式实现这一目标。
您可以在@Formula 中放置一个占位符"{TO_BE_REPLACED}" 并添加一个Hibernate 拦截器来更改onPrepareStatement。
在那里你可以改变hibernate生成的SQL。只需检查 SQL 字符串并将{TO_BE_REPLACED} 替换为您的实际值。
查看如何添加拦截器here
【讨论】: