我们能否将创建者、创建日期、更新者、更新日期等常见列提取为单独的 POJO,并在我们的 JPA 实体中扩展此 POJO。
我尝试过,但扩展 POJO 中的列未注册。想了解为什么会发生这种情况以及解决方法是什么?
最佳答案
最简单的方法是创建一个用 MappedSuperclass
注释的通用父类(super class):
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@MappedSuperclass
@EntityListeners(TraceAbleListener.class)
public class TraceAble {
@Temporal(TemporalType.TIMESTAMP)
private Date createdOn;
@Temporal(TemporalType.TIMESTAMP)
private Date updatedOn;
private String createdBy;
private String updatedBy;
//getters setters, or use lombok @Date
}
然后,您只需使用适当的 JPA 事件处理程序创建一个实体监听器来创建、更新日期、用户等(PrePersist、PreUpdate
...),或者您可以将这些方法直接添加到您的常用方法中 super 一流。
关于java - 提取公共(public)列(审核字段)[Java][JPA],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717785/