gpt4 book ai didi

java - 如果实体本身的实体监听方法和生命周期回调重复怎么办?

转载 作者:行者123 更新时间:2023-12-02 07:20:18 24 4
gpt4 key购买 nike

只是好奇。

从WebSphere看到规则:重复的生命周期回调方法如果一个实体生命周期事件定义了多个回调方法,则这些方法的调用顺序如下:实体监听器中定义的生命周期回调方法:在实体类的实体监听器类上定义的生命周期回调方法的调用顺序与 EntityListeners 注解或 XML 描述符中实体监听器类的规范相同。监听器父类(super class):在实体监听器的父类(super class)中定义的回调方法在子级之前调用。实体生命周期方法:WebSphere® eXtreme Scale 不支持实体继承,因此实体生命周期方法只能在实体类中定义。

但它只提到了多个回调来自不同监听器的场景。

如果在实体类中定义了一个回调(例如 @PostLoad),但在监听器中定义了另一个回调(也称为 @PostLoad),会怎么样?

首先调用哪个回调方法?序列是指定的还是依赖于提供者?

非常感谢!

最佳答案

首先调用监听器中的方法,然后调用实体中的回调方法。更具体地说,顺序是:

  1. 默认监听器(在 XML 描述符中定义的监听器)
  2. 监听器中的方法,从父类(super class)开始,按照在 @EntityListeners 注释中定义的顺序。
  3. 实体层次结构中的回调方法,从最上面的父类(super class)开始。

JPA 2.0 规范 3.5 实体监听器和回调方法 中详细指定了调用顺序(并带有说明性示例)。

关于java - 如果实体本身的实体监听方法和生命周期回调重复怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com