我是 Hibernate 的新手,正在开发一个使用它的 Web 项目。
我有一个名为 area 的对象,它有一个 date object( java.sql.Timestamp
) 属性 modifiedDate。当我创建一个新对象时,modifieDate 为空,然后将其发送到getHibernateTemplate().saveOrUpdate(area);
我自己的扩展类中,org.springframework.orm.hibernate3.support.HibernateDaoSupport
并使用当前时间戳设置并保存在数据库中。在数据库中,它保存为datetime
.
我的问题是大多数情况下,对象的更新日期与保存在数据库中的日期相比相差 1 毫秒,如果在不重新加载页面的情况下尝试更新任何内容,则会导致此异常:
an org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
随后从数据库中获取对象时,正确的日期没有问题,只是在创建时它得到了错误的值。
有没有办法在 SaveOrUpdate 获得正确的 modifiedDate?
如果需要映射使用<timestamp name="modifiedDate" column="ModifiedDate"/>
并且所有测试都在本地主机上运行,所有测试都在同一台机器上运行。
我已经有一个解决方法,通过getHibernateTemplate().refresh(area);
在 saveOrUpdate 之后立即调用我得到正确的时间戳,但我仍然想知道是否有办法在 saveOrUpdate 获得正确的 modifiedDate。