我是Hibernate的新手,正在处理使用Hibernate的Web项目。
我有一个对象叫做area,它有一个日期对象(java.sql.Timestamp
)属性modifiedDate。当我创建一个新对象时,modifieDate为null,在我的类中调用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"/>,所有测试都在本地主机上运行,并且所有内容都在同一台机器上运行。
我已经有一个解决方法了,在saveOrUpdate之后调用getHibernateTemplate().refresh(area)可以获取正确的时间戳,但是我仍然想知道是否有办法在saveOrUpdate中获取正确的modifiedDate。