簡體   English   中英

實體更新后@Createdby @CreatedDate 為空

[英]@Createdby @CreatedDate are null after entity is updated

我已經在 Spring 應用程序中實現了審計列,當我創建一個新實體時,列被設置,但當我更新實體時,我發現兩個 @Createdby 和 @CreatedDate 設置為空,我該如何制作這些創建后列不可更改:

@MappedSuperclass
public abstract class Audit implements Serializable {

    @CreatedBy
    private String createdBy;

    @CreatedDate
    private Date createdDate;

    @LastModifiedBy
    private String lastModifiedBy;

    @LastModifiedDate
    private Date lastModifiedDate;
}

對我來說它有效:

@MappedSuperclass
public class Auditor {

    @Column(name = "created_date", updatable = false)
    @CreatedDate
    private long createdDate;

    @Column(name = "modified_date")
    @LastModifiedDate
    private long modifiedDate;

    @Column(name = "created_by", updatable = false)
    @CreatedBy
    private String createdBy;

    @Column(name = "modified_by")
    @LastModifiedBy
    private String modifiedBy;
}

並擴展類:

@Entity
@EntityListeners(AuditingEntityListener.class)
public class Material extends Auditor {

    @Id
    @SequenceGenerator(name = "seq_material", sequenceName = "seq_material")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_material")
    private Long id;

    @Column
    @NotBlank(message = "Nome é um campo obrigatório!.", groups = validacaoProd.class)
    private String nome;

    More...
}

我更新了數據庫中的記錄:

update material set created_date = 1618418750189, modified_date = 1618418750189 

您可以在類級別使用@DynamicUpdate。 它將只考慮更新列並忽略其他列以放入 UPDATE 查詢。

參考: https : //www.baeldung.com/spring-data-jpa-dynamicupdate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM