我有一个Java实体,其字段带有注解@Formula,在其中执行了一个SQL查询,其中包含Firebird数据库的某些特定功能。现在,我必须迁移到Oracle数据库,并且需要替换该@Formula中的SQL代码。有办法实现吗?我可以通过某种方式扩展Hibernate @Formula以便在运行时更改注释的值吗?谢谢
您可以实现这种稍微不同的方式。
您可以放置@Formula一个占位符"{TO_BE_REPLACED}"并添加一个Hibernate Interceptor来更改onPrepareStatement。在那里您可以更改由hibernate生成的SQL。JUst检查SQL字符串并将替换为{TO_BE_REPLACED}您的实际值。
@Formula
"{TO_BE_REPLACED}"
{TO_BE_REPLACED}
在此处了解如何添加拦截器