当前位置: 首页 > 知识库问答 >
问题:

提交到数据库之前修改Hibernate和 Spring 查询

上官琦
2023-03-14

我有一个Hibernate查询,配置为使用Spring Data (@ Repository)注释执行。我希望在查询提交到数据库之前捕获它,当满足特定条件时,稍微修改它。

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

共有1个答案

上官波鸿
2023-03-14

如果您想在准备好的语句之后修改查询,您可以将其放入Hiber警局拦截器中,并在Spring DB配置期间注册它。

您的MyInterceptor应该实现Hibernate Interceptor.class或扩展EmptyInterceptor.class。

public String onPrepareStatement(String sql);

如果您需要更多的东西,您可以尝试使用事件监听器,但是我不确定是否有适合您的事件监听器。

这里有些留档:

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

 类似资料:
  • 问题内容: 我有一个配置为使用Spring Data(@Repository)注释执行的Hibernate查询。我想在将查询提交给数据库之前捕获该查询,并在满足特定条件时对其进行一些修改。 这样做的最佳选择是什么?我更喜欢JPA解决方案而不是Hibernate解决方案,但是Hibernate解决方案也可以使用。 问题答案: 如果要在准备好的语句之后修改查询,可以将其放入Hibernate Inte

  • 我无法使spring-Cloud-stream-binder-kafka适用于以下用例: 启动@事务(Rest控制器)DB更新/插入发送Kafka消息 在事务提交之前,使用者(使用@EnableBinding和@StreamListener配置)能够读取记录。此使用者已配置了read\u提交的隔离级别。 我不确定这是一个问题还是我这边的任何配置。 尝试配置bean ChainedTransacti

  • CORS策略阻止从来源'http://laravelvue2.test'访问位于'http://localhost:8000/items'的XMLHttpRequest:请求的资源上没有'Access-Control-Allow-Origin'标头。

  • 问题内容: 我正在尝试使用Hibernate和JPA设置Spring,但是当试图持久化一个对象时,似乎什么都没有添加到数据库中。 我正在使用以下内容: 在AccountManager中,我正在做: 交流电来自哪里: 有谁能指出我做错了什么?持久调用返回而不会引发异常。如果之后我这样做,则返回true。 如果有人需要,请按以下步骤定义帐户: 问题答案: 多亏了eric和Juan Manuel的回答,

  • 我对Spring和冬眠是新的。我有一个使用Spring、Hibernate和PostgreSQL的项目。我知道我可以使用Spring Data JPA或Hibernate查询数据库,但我不知道每种方法的优点和缺点是什么。我还知道在后台,Spring Data JPA会调用Hibernate。那么我应该使用什么最佳方式来查询数据库以获得最佳性能,Spring数据JPA或Hibernate或取决于具体

  • 问题内容: 我试图使用Hibernate和JPA设置Spring,但是当试图持久化一个对象时,似乎什么都没有添加到数据库中。 我正在使用以下内容: 在AccountManager中,我正在做: 交流电来自哪里: 有谁能指出我做错了什么?持久调用返回而不会引发异常。如果之后我这样做,则返回true。 如果有人需要,请按以下步骤定义帐户: 问题答案: 多亏了eric和Juan Manuel的回答,我才