java - 提取公共(public)列(审核字段)[Java][JPA]

标签 java hibernate jpa

我们能否将创建者、创建日期、更新者、更新日期等常见列提取为单独的 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/

相关文章:

java - 复制 JPA 中的实体

java - JPA - 如何更新双向 OneToMany/ManyToOne 关系中的集合

java - 为什么 Collections.binarySearch 输出不一致

java - 如何在两个对象的java相等性中评估列表

hibernate - java.lang.ClassNotFoundException:org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl $在运行测试中起作用

hibernate - 使用 Gorm 查询列子集

java - 将 JPanel 从一个类添加到 JFrame 时出现 NullPointerException

java - 如何从 GAE Java 通过代理发送基本的 HTTP GET?

java - 如何隐藏url中的参数值

hibernate - 具有该名称 [userName] 的参数不存在