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

Hibernate和Spring修改查询,然后提交给DB

申博厚
2023-03-14
问题内容

我有一个配置为使用Spring
Data(@Repository)注释执行的Hibernate查询。我想在将查询提交给html" target="_blank">数据库之前捕获该查询,并在满足特定条件时对其进行一些修改。

这样做的最佳选择是什么?我更喜欢JPA解决方案而不是Hibernate解决方案,但是Hibernate解决方案也可以使用。


问题答案:

如果要在准备好的语句之后修改查询,可以将其放入Hibernate Interceptor中,并在Spring DB Configuration中进行注册。

您的MyInterceptor应该实现Hibernate
Interceptor.class或扩展EmptyInterceptor.class。您正在寻找的方法是:

public String onPrepareStatement(String sql);

如果您还需要其他功能,可以尝试使用事件监听器,但是我不确定是否有适合您的情况。

这里有一些文档:

Hibernate 4.0拦截器和事件
如何将拦截器与Spring集成



 类似资料:
  • 我有一个Hibernate查询,配置为使用Spring Data (@ Repository)注释执行。我希望在查询提交到数据库之前捕获它,当满足特定条件时,稍微修改它。 这样做的最佳选择是什么?我更喜欢JPA解决方案,而不是HiberNate解决方案,但是HiberNate解决方案也可以工作。

  • 嗨,朋友们需要帮助在改造,我是初学者在使用改造,请帮助我,我需要的网址是这样的 http://54.202.3.127/paralle_space/paralleljson.php?action=aboutus&id=1 URL查询字符串“action={terms}/”不能有replace block。对于动态查询参数,请使用@query。 如果我用query替换path,那么url就会像下面这

  • 指定amend选项执行提交的话,可以修改同一个分支最近的提交内容和注解。 主要使用的场合: 添加最近提交时漏掉的档案 修改最近提交的注解

  • 若要把文件或目录的添加和变更保存到数据库,就需要进行提交。 执行提交后,数据库中会生成上次提交的状态与当前状态的差异记录(也被称为revision)。 如下图,提交是以时间顺序排列状态被保存到数据库中的。凭借该提交和最新的文件状态,就可以知道过去的修改记录以及内容。 系统会根据修改的内容计算出没有重复的40位英文及数字来给提交命名。指定这个命名,就可以在数据库中找到对应的提交。 Tips(小贴士

  • 为了节省时间,这个教程使用现有的历史记录作为本地数据库。 从这里下载 我们进入stepup-tutorial/tutorial6目录。本地端的历史记录的状态如下图显示。我们在这里修改「添加commit的讲解」的内容。 用rebase -i ,首先选择要修改的提交。 $ git rebase -i HEAD~~ 打开文本编辑器,将看到从HEAD到HEAD~~的提交如下图显示。 pick 9a54fd

  • 在vue3中, 如果我按上面的写法,将currentOptional赋值到了myOptionalList中后, 清空currentOptional,发现myOptionalList也会被清空 我知道这是引用传递的问题,解决方法是进行深拷贝, 但是我有点疑惑,我记得vue2中好像不存在这种问题啊, 是我记错了吗