【发布时间】:2017-02-22 20:43:04
【问题描述】:
我有一个 JPA 实体,它有一个创建日期和一个修改日期列。在创建/保留时,创建日期和修改日期均由数据库中给定的默认值生成,即时间戳。但是,当我尝试进行更新/合并时,创建工作有效,我无法弄清楚如何通过使用数据库中的默认值来更改修改日期。有什么建议吗?这是当前设置:
....
@Temporal(TemporalType.DATE)
@Column(name="CREATED_DATE", insertable = false, updatable = false)
private Date createdDate;
@Temporal(TemporalType.DATE)
@Column(name="MODIFIED_DATE", insertable = false)
private Date modifiedDate;
....
-
public Database changeDate(Database oldValues)
Database newvalues = new Database();
....
newValues.setCreatedDate(oldValues.getCreatedDate);
//newValues.setModifiedDate(); <-- (Should use the default value in the database)
....
em.merge(newValues); <-- (EntityManager)
em.getTransaction().commit();
** 以防万一我没有说清楚,我只是不知道如何让它更新为数据库中设置的默认值。
【问题讨论】:
-
只是为了让这一点更清楚一点,您是在说“我正在尝试将 newValues.modifiedDate 更新为新的 Date() 值,但在事务提交后,数据库显示没有更新”或“我正在尝试将 newValues.modifiedDate 更新为空值,但出现异常”?
-
我想尝试让它更新到它存储在数据库中的默认值。将其设置为 null 没有帮助。我可能会使用新的 Date() 路由,但我仍然更喜欢默认值。
-
我建议编辑您的问题并删除“null”。如果您改写您的问题以准确解释您想要做什么,我们将更容易提供帮助。
-
编辑了问题。希望现在更清楚了。
-
newValues是new Database()实体,是吗?所以em.merge(newValues)不是你应该做的。它需要坚持下去。 IOW:em.persist(newValues)
标签: java jpa entitymanager