gpt4 book ai didi

JPA @PrePersist 和 @PreUpdate 使用继承时的顺序

转载 作者:行者123 更新时间:2023-12-03 16:07:01 33 4
gpt4 key购买 nike

假设以下代码片段使用 @PrePersist 和 @PreUpdate 注释和 Joined-type 继承:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class A {
...

@PrePersist
private void prePersist() {
...
}

@PreUpdate
private void preUpdate() {
...
}
}

@Entity
@DiscriminatorValue("B")
public class B extends A {
...

@PrePersist
private void prePersist() {
...
}

@PreUpdate
private void preUpdate() {
...
}
}

问题:我们可以依赖回调方法的任何执行顺序吗?

例如,当持久化 A 和 B 类时,B 中的 prePersist 方法是否会在 A 中的 prePersist 方法之前执行,反之亦然?

我们可以假设 B 中的 prePersist 会在类 A 被持久化之前执行吗?

最佳答案

是的。首先将执行父类(super class)回调。

引发事件时,监听器按以下顺序执行:

@EntityListeners for a given entity or superclass in the array order

Entity listeners for the superclasses (highest first)

Entity Listeners for the entity

Callbacks of the superclasses (highest first)

Callbacks of the entity

有关更多详细信息,请阅读:“回调和监听器继承”,网址为

https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/listeners.html

关于JPA @PrePersist 和 @PreUpdate 使用继承时的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27237253/

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