Spring boot JPA 审计覆盖自动生成 CreatedDate 和 LastModifiedDa

问题描述

我正在使用 JPA 审计 (@EnableJpaAuditing) 为我自动生成 createdDate 和 LastModifiedDate。但是其中一项要求要求我从应用程序上传离线数据并与服务器同步,它需要在创建/修改期间将客户端的 createdDate 和 LastModifiedDate 插入表中。不幸的是,我发现它不起作用,因为 jpa 框架将始终生成自己的 createdDate 和 LastModifiedDate。

有没有办法让 JPA 审计只在提供 null 时生成这些日期字段?谢谢。

DateAudit.java

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class DateAudit implements Serializable{
    private static final long serialVersionUID = 1L;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_at",nullable = false,updatable = false)
    @CreatedDate
    private Date createdAt;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "updated_at",nullable = false)
    @LastModifiedDate
    private Date updatedAt;
    
}

BookEntity.java

@Entity(name = "Books")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class BookEntity extends DateAudit{
    private static final long serialVersionUID = 903488645655479319L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Type(type = "uuid-char")
    @Column(columnDeFinition = "VARCHAR(36)",updatable = false,nullable = false)
    private UUID id;
    @Column(nullable = false)
    private String name;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)