当前位置: 首页 > 面试题库 >

在运行时休眠@Formula设置值

罗波鸿
2023-03-14
问题内容

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


问题答案:

您可以实现这种稍微不同的方式。

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

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



 类似资料:
  • 问题内容: 在Hibernate 3.2中如何在运行时设置获取类型? 如果有可能在运行时更改获取类型(“懒惰/渴望”)。因此,如果已经定义了获取模式,即hibernate.mapping文件中的“选择/连接”,是否有任何影响? 问题答案: 您可以用来指定要初始化的特定集合。 例如 在这里查看更多

  • 问题内容: 我有一个部门实体,其关系如下: 许多部门 可以在 一个父部门中 : 一个上级部门 可以有 多个部门 : 我想实现下一个:当我 删除 一个 部门 ,那么 ik_parent_department_id 所有的参数 孩子 这个的 部门 设置为 空 。任何想法如何做到这一点? 问题答案: 您必须将子级的显式设置为null。 进行级联时,您只能删除子级。

  • 问题内容: 在hibernate映射中,我设置了属性,这将获取父级的所有子级记录。 整个应用程序都在使用它。 这在我的应用程序的特定模块上造成了性能问题,我只想在其中获取父记录。 由于无法在其他许多地方使用该属性,因此我无法将其更改为。有没有办法来解决这个问题? 请让我知道是否需要更多信息。 问题答案: 这些在hibernate状态并不具有这种功能,因为它尊重您的习惯。因此,我建议解决您的需求的方

  • 问题内容: 我正在使用hibernate 4和spring 4为Java Web应用程序设置多租户支持。默认模式是在应用程序启动时创建和设置的。当不尝试支持多租户时,此架构可以正常工作。 现在,我需要为每个创建帐户的新租户创建一个架构。该模式可以简单地是通用模式的副本,因为它将遵循相同的格式。 如何在运行时创建与默认架构相同格式的新架构?似乎在实例化LocalSessionFactoryBean时

  • 问题内容: 是否可以在运行时创建休眠的Entity类(带有注释)?它应该与也在运行时添加的表相关。重要的是,该实体应该对Hibernate可见。一般情况下是否可能,请您给我有关该问题的任何建议吗?我了解,反射是关键字,但需要更多的单词。问候。 问题答案: 在这种情况下,您可能希望在运行时以编程方式创建Hibernate Session Factory,传入您创建的新映射,并查看http://doc

  • 问题内容: 是否可以在运行时关闭每个类的某些约束/注释?例如,如果我想对一个字段进行检查,那可能吗? 这将使测试更容易查看某个约束是否正确正确触发,因为我可以关闭所有其他约束,而只需检查一个约束即可。 问题答案: 是否可以在运行时关闭每个类的某些约束/注释?例如,如果我想对firstName字段进行@NotNull检查,那可能吗? 不它不是。Bean验证未定义此类功能。Hibernate Vali