在运行时休眠@Formula设置值

And*_*oni 3 hibernate

我有一个Java实体,其字段带有注解@Formula,在其中执行了包含Firebird数据库某些特定功能的SQL查询。现在,我必须迁移到Oracle数据库,并且需要替换该@Formula中的SQL代码。有办法实现吗?我可以通过某种方式扩展Hibernate @Formula以便在运行时更改注释的值吗?谢谢

Sta*_*avL 7

您可以实现这种略有不同的方式。

您可以放置@Formula一个占位符"{TO_BE_REPLACED}"并添加一个Hibernate Interceptor来更改onPrepareStatement。在那里您可以更改由休眠生成的SQL。JUst检查SQL字符串并将替换为{TO_BE_REPLACED}您的实际值。

在此处了解如何添加拦截器