Can I annotate @EntityListener on interfaces?

3
我正在设计数据库和实体。我需要为某些实体定义共享的生命周期操作。
我能够在接口上注解@EntityListeners,从而影响实现该接口的实体吗?
@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?
}

@NeilStockton 如果我不关心任何特定实现的行为,我就不会发布这种问题。多么经典的评论。 - Jin Kwon
1个回答

3
我已经尝试了JPA 2.1,但遗憾的是,它似乎只适用于实体。因此,如果您的想法是使用接口或甚至不是实体的超类,则无法工作。 规范表示:
当使用注释时,一个或多个实体监听器类通过在实体类或映射的超类上使用EntityListeners注释来指定。
但您可以使用默认侦听器(在XML配置中设置)。这样它就会在删除任何对象时触发。您必须使用object instanceof StorageObjectOwner进行过滤。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接