Java Spring数据REST-POST后的空字段-我应该在何时/何地初始化它们?
我的便笺储存库扩展了crudepository。注释具有标题、注释正文和创建日期。对/notes的POST请求将包括标题和记事本,我希望dateCreated自动为LocalDateTime.now() 我们可以接受吗Java Spring数据REST-POST后的空字段-我应该在何时/何地初始化它们?,java,spring-data,spring-data-rest,Java,Spring Data,Spring Data Rest,我的便笺储存库扩展了crudepository。注释具有标题、注释正文和创建日期。对/notes的POST请求将包括标题和记事本,我希望dateCreated自动为LocalDateTime.now() 我们可以接受吗 @Entity public class Note { ... @Column(name="DTCREATED") private LocalDateTime dateCreated = LocalDateTime.now(); 或者我应该用另一种方式来
@Entity
public class Note {
...
@Column(name="DTCREATED")
private LocalDateTime dateCreated = LocalDateTime.now();
或者我应该用另一种方式来做吗?在我的代码中,我通过使用@PrePersist和@PreUpdate注释来实现这一点,当实体被持久化/更新时,将调用此注释,您不需要手动初始化
LocalDateTime
实例,您可以使用新注释来实现这一点
@CreationTimestamp
@Column(name = "create_datetime", nullable = false, updatable = false)
private LocalDateTime createDateTme;
@UpdateTimestamp
@Column(name = "lastupdate_datetime", nullable = false)
private LocalDateTime lastUpdateDateTime;
这些注释可以在
org.hibernate.annotations
包中找到。保存实体的实例时,不要初始化它们 @CreationTimestamp
/@UpdateTimestamp
与@PrePersist
/@PreUpdate
之间是否存在数据库性能差异?还是一个优于另一个?没有数据库性能不同。这两种情况都发生在JVM中。此@CreationTimestamp
和@UpdateTimestamp
注释专门设计用于创建日期时间
和更新日期时间
列。它们还只支持java.time.LocalDate
,java.time.LocalDateTime
,java.util.Date
,java.util.Calendar
,java.sql.Date
,java.sql.time
和java.sql.Timestamp
。Hibernate在保存
或更新
时初始化它们@PrePersist
和@PreUpdate
注释是JPA实体事件侦听器。只要对它们进行初始化,就可以将它们与任何类型一起使用。