为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot 2.0如何为Native Query添加Event Listener?

Spring Boot 2.0如何为Native Query添加Event Listener?

牛魔王的故事 2023-06-08 21:02:28
目前,我有一个场景,我想为执行的查询添加事件监听器。我的实体监听器public class EntityListener implements PostInsertEventListener, PostUpdateEventListener, PostDeleteEventListener {我的仓库@Transactional@Modifying@Query(value = "UPDATE example e SET e.name = :name WHERE e.id = :id", nativeQuery = true)    void testUpdatedQuery(@Param("name") String name, @Param("id") String id);如果我使用 spring-data-jpa 的方法,事件侦听器工作正常,但如果我尝试上面的本机查询,我将无法触发事件。所以,我的问题是如何收听“本机查询”事件?
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

所以,我的问题是如何收听“本机查询”事件?

您至少不能以类似于 EntityListener 的方式进行。这样做的原因是无法确定给定更新的受影响实体。

我看到以下选项:

  1. 实现使用相同 where 子句加载受影响实体的自定义方法,然后触发某种事件机制。

  2. 正如 Zorglube 建议的那样,您还可以使用数据源代理来拦截每个 SQL 查询,但这对于您的用例来说可能是低级别的,因为您会看到大量您可能不关心的语句,因为它们是由您创建的JPA 实施。


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信