gpt4 book ai didi

jpa - 我可以在接口(interface)上注释@EntityListener 吗?

转载 作者:行者123 更新时间:2023-12-04 13:25:05 27 4
gpt4 key购买 nike

我正在设计数据库和实体。我需要为某些实体定义共享生命周期操作。

我可以在接口(interface)上注释 @EntityListeners 以便实现该接口(interface)的实体影响吗?

@EntityListeners({StorageObjectOwnerListener.class})
public interface StorageObjectOwner {
}

public class StorageOwnerOwnerListener {

@PreRemove
private void onPreRemove(final Object object) {
}
}

现在任何实体工具都会受到影响。

public class MyEntity implements StorageObjectOwner {
// will StorageObjectOwnerListener take action?
}

最佳答案

我已经用 JPA 2.1 试过了。可悲的是,它似乎只适用于实体。因此,如果您的想法是使用一个接口(interface),甚至是一个不是实体的父类(super class),它就不会起作用。

Specification说:

When annotations are used, one or more entity listener classes are denoted using the EntityListeners annotation on the entity class or mapped superclass.

但是您可以使用默认监听器(在 XML 配置中设置)。这样它会触发任何被移除的对象。您必须使用 object instanceof StorageObjectOwner 过滤它们。

关于jpa - 我可以在接口(interface)上注释@EntityListener 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713190/

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