如何注册hibernate spring实体监听器

2024-05-04

我已经构建了一个实体侦听器,但尚未弄清楚如何注册它以便调用它。这一切都运行了,我在调试器中验证了 注册代码在启动时执行(显然成功)。但调试器永远不会停止在侦听器代码中。

这是我的听众:

public class DirtyAwareListener implements PostLoadEventListener
{
   @Override
   public void onPostLoad(PostLoadEvent postLoadEvent)
   {
      if (postLoadEvent.getEntity() instanceof DirtyAware)
      {
         ((DirtyAware)postLoadEvent.getEntity()).commitFields();
      }
   }
}

这是注册组件:

@Component
public class HibernateListenerConfigurer
{
   @PersistenceUnit
   private EntityManagerFactory emf;

   @Autowired
   private SessionFactory sessionFactory;

   @PostConstruct
   protected void init()
   {
      DirtyAwareListener listener = new DirtyAwareListener();
//      SessionFactoryImpl sessionFactory = emf.unwrap(SessionFactoryImpl.class);
      EventListenerRegistry registry = ((SessionFactoryImpl)sessionFactory).getServiceRegistry().getService(EventListenerRegistry.class);
      registry.getEventListenerGroup(EventType.POST_LOAD).appendListener(listener);
   }
}

以下是我的一般 Hibernate 配置代码生成会话工厂的方式:

    LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
    sessionFactory.setDataSource(getDataSource());
    sessionFactory.setPackagesToScan("com.my.entities");
    sessionFactory.setHibernateProperties(getHibernateProperties());
    sessionFactory.setEntityInterceptor(new DirtyAwareInterceptor());
    return sessionFactory;

请注意,拦截器确实按预期工作(但不幸的是没有我需要的钩子。)


添加实体监听器实现org.hibernate.integrator.spi.Integrator。参见示例https://www.boraji.com/hibernate-5-event-listener-example https://www.boraji.com/hibernate-5-event-listener-example

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何注册hibernate spring实体监听器 的相关文章

随机推荐

  • 部分渲染冗余方法调用

    我知道 JSF 可能会调用托管 bean 方法几次 即使它在 xhtml 中只调用一次 我知道这是由于编码 方法造成的 我想请您向我解释一下以下案例 我有一个类似这样的 JSF 文件
  • RecyclerView 中的 OnLongItemClick

    我开始在 Android 中使用 RecyclerView 一切工作正常 直到我为我的适配器实现触摸侦听器 来自这个主题 https stackoverflow com a 26826692 2923403 https stackoverf
  • 如何设置 MySQL Workbench 自动断开与服务器的连接?

    有没有办法设置Workbench在空闲时自动与服务器断开连接 命令行 mysql 客户端在空闲时断开连接 然后在运行查询时重新连接 我也希望 Workbench 自动断开连接 我无法修改服务器的超时设置 但命令行客户端可以按照当前服务器设置
  • 在 R 中连接/匹配数据帧

    我有两个数据框 第一列有两列 x是水深 y是每个深度的温度 第二个也有两列 x也是水深 但与第一个表中的深度不同 第二栏z是盐度 我想通过以下方式连接两个表x 通过增加z到第一张桌子 我已经学会了如何使用 key 来连接表tidyr 但只有
  • 读取进程的进程内存不会返回所有内容

    我正在尝试扫描第三方应用程序的内存 我已经查到地址了 现在是在0x0643FB78 问题是 从那以后我就再也爬不上去LPMODULEENTRY32 gt modBaseAddr is 0x00400000 and LPMODULEENTRY
  • 在 Java 中引发竞争条件

    我必须编写一个引发竞争条件的单元测试 以便我可以测试稍后是否可以解决问题 问题是竞争条件很少发生 可能是因为我的计算机只有两个核心 代码如下 class MyDateTime String getColonTime datetime is
  • Select2 基本示例不起作用

    我想得到select2使用 symfony2 脚本的库 我正在尝试实现提供的基本示例https select2 github io examples html https select2 github io examples html pa
  • C# 中的通用 foreach 循环

    给出以下代码的编译器告诉我 使用未分配的局部变量 x 有什么想法吗 public delegate Y Function
  • 如何使用 JS 和 Chrome 控制台向频道发送 Discord 消息?

    如何使用 JS 和 Chrome 控制台在不使用 Discord API 的情况下将 Discord 消息发送到 Discord 频道 看来这是不可能的事了 打开不和谐控制台 ctrl shift i 不起作用 请参阅下面的编辑 然后进入网
  • 为什么 Java 原始数据类型不称为 java 数据类型?

    我有一个问题 为什么 Java 原始数据类型不直接称为 Java 数据类型 或类似的名称 因为Java有更多的数据类型原语 http java sun com docs books tutorial java nutsandbolts da
  • Boost.Intrusive 和 unordered_map

    我希望使用侵入性的 unordered map 由于某种原因 库中只有一个 unordered set 还有一个侵入式哈希表 但我不确定它是否具有相同的功能 而且它没有相同的接口 我错了吗 我错过了 unordered map 链接吗 如果
  • 无法处理 ajax 中的 302 重定向,为什么? [复制]

    这个问题在这里已经有答案了 我有一个使用表单身份验证用 asp net mvc 编写的后端服务器 当用户未通过身份验证时 服务器将自动发送 302 重定向到登录操作并返回登录页面 在客户端 我有一个项目列表 只有经过身份验证的用户才能访问此
  • C# 如何比较两个字符串并指出哪些部分不同

    例如 如果我有 string a personil string b personal 我想得到 string c person i l 然而 它不一定是单个字符 我也可以这样 string a disfuncshunal string b
  • 带有 OpenCV 的增强现实 SDK [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从 keras 模型中将特征提取到数据集中

    我使用以下代码 由here https github com keras team keras blob master examples mnist cnn py 运行 CNN 来训练 MNIST 图像 from future import
  • Python 中的 Socket.IO 客户端库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谁能推荐一个 Python 的 Socket IO 客户端库 我环顾四周 但我能找到的唯一的要么是服务
  • 使用“:not”和“.not()”选择器之间的性能差异?

    以下两条生产线之间是否存在速度 效率差异 table td not first child and table td not first child 我认为第一个会更好 因为它删除了对象 但是是否存在实际差异并且是否实质性差异 Thanks
  • Lua 从 5.1 更新 - LUA_GLOBALSINDEX 问题

    我最近将旧的 Lua 5 1 项目更新到了该库的最新版本 但遇到了问题LUA GLOBALSINDEX 它变得不确定 我只用过它lua getfield函数 像这样 void luastartgame void if startgamefu
  • 带设计的嵌套形式

    这是我的注册表单 p br p p br p p br p
  • 如何注册hibernate spring实体监听器

    我已经构建了一个实体侦听器 但尚未弄清楚如何注册它以便调用它 这一切都运行了 我在调试器中验证了 注册代码在启动时执行 显然成功 但调试器永远不会停止在侦听器代码中 这是我的听众 public class DirtyAwareListene