You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

父映射超类的EntityListeners未生效,需子类重复配置?这正常吗?

JPA审计监听器继承问题解答

这种情况是正常的,核心原因和JPA注解的继承规则有关:

  • JPA的@EntityListeners注解默认不会被子类继承,哪怕父类是@MappedSuperclass类型。@MappedSuperclass只会传递实体的映射元数据(比如字段、关联关系),但监听器配置属于类级别的专属设置,不会自动向下传递。
  • 你的L1类虽然加了AuditingEntityListener监听器,但这个配置只对L1本身生效,不会传递给继承它的L2。而L2里的@CreatedDate字段需要这个监听器来触发自动赋值,所以没加注解时审计功能失效。
  • 当你在L2上显式添加@EntityListeners({AuditingEntityListener.class})后,监听器配置会被应用到L2,同时它的子类L3作为实体类,会继承这个监听器配置,所以审计功能就能正常工作了。

如果不想每个类都重复加监听器注解,也可以用全局配置方案:

  • 在Spring配置类上添加@EnableJpaAuditing注解,全局开启JPA审计功能,这样所有标注了@CreatedDate、@LastModifiedDate等审计注解的字段,都会自动被AuditingEntityListener处理,无需再在类上单独标注@EntityListeners。

内容的提问来源于stack exchange,提问作者Jin Kwon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:57:35