我有一个称为recInfo的实体,其中包含一些有关在几个实体中条目的创建和修改的信息。

此时,实现是通过setter完成的,因此每次我想在这些实体之一中添加条目时,都必须创建一个新的recInfo并将其设置为我实体的recInfo字段。

我正在考虑向这几个实体添加一个侦听器,每当有人创建一个新侦听器或对其进行修改时,它都会保存时间戳,而创建该时间戳的用户(使用sessionContext.getCallerPrincipal().toString();

我查看了文档,但是发现很难理解如何将侦听器应用于实体中的更改!

最佳答案

JPA回调用于此目的。

public class EntityListener {

    @PrePersist
    @PreUpdate
    public void setRecInfo(Entity entity) {
        RecInfo recInfo = new RecInfo();
        // TODO set recInfo fields
        entity.setRecInfo(recInfo);
    }

}

@Entity
@EntityListeners (value = {EntityListener.class})
public class Entity {

    private RecInfo recInfo;

    public RecInfo getRecInfo() { return recInfo };

    public void setRecInfo(RecInfo recInfo) { this.recInfo = recInfo };

}

关于java - JPA实体事件监听器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46317582/

10-10 02:37