我有一个带有注释@Formula的字段的Java实体,其中执行包含Firebird数据库的某些特定功能的SQL查询。 现在我必须迁移到Oracle数据库,我需要替换@Formula中的SQL代码。 有没有办法实现这个目标?我可以以某种方式扩展Hibernate @Formula以便在运行时更改注释的值吗? 感谢
答案 0 :(得分:5)
你可以实现这种稍微不同的方式。
您可以在@Formula
占位符"{TO_BE_REPLACED}"
中添加Hibernate Interceptor来更改onPrepareStatement。
在那里你可以改变hibernate生成的SQL。 JUst检查SQL字符串并用您的实际值替换{TO_BE_REPLACED}
。
了解如何添加拦截器here