我在这里感到困惑。我想在我的 spring hibernate 程序中实现乐观锁定,但是即使我在单独的浏览器中打开一个数据并单独更新它,hibernate 也不会抛出 StaleObjectStateException。
我的道是这样的:
public void update(User user) throws StaleObjectStateException{
sessionFactory.getCurrentSession().saveOrUpdate(user);
}
我的 Pojo 看起来像这样:
@Version@Temporal(TemporalType.TIMESTAMP)
@Column(name="timestamp", length=19)
public Timestamp getTimestamp() {
return this.timestamp;
}
配置文件
<bean name="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
</bean>
<tx:annotation-driven />
<bean name="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
我怀疑它为什么不抛出异常的一个疑问是,在更新时,另一个会话时间戳也会更新,因为数据是持久的?请帮忙。
佩里