如何使用Spring,Hibernate将具有自动值的数据插入到createdDate和updatedDate?

Spa*_*ace 3 java mysql spring hibernate

我想插入自动插入created_at日期时间和相应的updated_at日期时间的数据.

我有一个pojo:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id")
private Integer id;

@Basic(optional = false)
@Column(name = "name")
private String name;

@Basic(optional = false)
@CreationTimestamp
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt;

@UpdateTimestamp
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt;
Run Code Online (Sandbox Code Playgroud)

在我的数据库中,我使用DATETIME作为created_at和updated_at的类型.但我无法插入数据,而是提供错误消息not-null属性引用null或transient值:com.project.test.entity.Stamp.createdAt.

我想知道为created_at和updated_at DateTime字段定义数据库模式的正确方法,以使其自动生成.

Raj*_*rma 7

你可以做下面这样的事情.

1)使用新的Date()初始化您创建和更新的日期:

@Basic(optional = false)
@CreationTimestamp
@Column(name = "created_at")
@Temporal(TemporalType.TIMESTAMP)
private Date createdAt = new Date(); // initialize created date

@UpdateTimestamp
@Column(name = "updated_at")
@Temporal(TemporalType.TIMESTAMP)
private Date updatedAt = new Date(); // initialize updated date
Run Code Online (Sandbox Code Playgroud)

2)并通过新的Date()提供更新日期的setter方法,而不传递任何值:

@PreUpdate
public void setUpdatedAt() {  
    this.updatedAt= new Date(); 
}
Run Code Online (Sandbox Code Playgroud)