@UpdateTimestamp
@Column(name="UPDATE_TIME_STAMP")
private LocalDateTime updateTimeStamp;
@CreationTimestamp
@Column(name="POLICY_ISSUE_DATE")
private LocalDateTime policyIssueDate;
您好,我是休眠的新手。我的实体和数据库中都有上述字段。但是,对于我从SpringBoot控制器访问它的Dao方法,当使用bellow方法执行查询更新时,它不会更新数据库中的UPDATE_TIME_STAMP字段。
@Override
public int updatePolicyStatus(String status,int policyNumber) {
Query query = entityManager.createQuery("UPDATE Policy p SET POLICY_STATUS=:status where POLICY_NUMBER=:policyNumber");
query.setParameter("status",status);
query.setParameter("policyNumber", policyNumber);
return query.executeUpdate();
}
另外,如果我尝试合并实体,则它尝试使用NULL更新creationTimeStamp,由于我在数据库中将POLICY_ISSUE_DATE保持为NOT NULL,因此最终失败了。
@Override
public void updatePolicy(Policy policy) {
entityManager.merge(policy);
}
所以我如何在使用merge(policy)时避免creationTimeStamp的NULL值,以及为什么它的updateTimeStamp不使用executeUpdate()更新。
答案 0 :(得分:0)
您需要在模型/实体类中添加以下所示的注释。能否请您检查一下,并让我知道它是否对您有用。在我的应用程序中,我已经使用了几次,它就像黄油一样希望它也对您有用。
@UpdateTimestamp
@Column(name = "data_update_time")
@Temporal(TemporalType.TIMESTAMP)
private Date dataUpdateTime;
答案 1 :(得分:0)
@sai,您可以将 @Column(updatable = false)添加到policyIssueDate。因此,更新行时不会将其更新为null。