不知道是不是配置出了问题HBM文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="entity.Person" table="t_person" optimistic-lock="version">
<id name="id" column="id">
<generator class="native"/>
</id> <property name="version" column="version" type="int" />
<property name="name" column="name" type="string" />
<property name="age" column="age" type="int" />
<property name="gender" column="gender" type="string" />
<property name="length" column="length" type="int" />
<property name="strong" column="strong" type="int" />
</class>
</hibernate-mapping>
junit代码:
@Test public void load1(){
Session session = HibernateSessionFactory.getSession();
session.getTransaction().begin();
Person person = (Person) session.load(Person.class, 1l);
person.setAge(1);//在这里有个断点
session.update(person);
session.getTransaction().commit();
} @Test public void load2(){
Session session = HibernateSessionFactory.getSession();
session.getTransaction().begin();
Person person = (Person) session.load(Person.class, 1l);
person.setAge(2);
session.update(person);
session.getTransaction().commit();
}debug load1方法
在断点的地方停下,切换到java视图并运行load2方法
但是输出的sql中居然是这样的 update t_person set version=?, name=?, age=?, gender=?, length=?, strong=? where id=?
为什么乐观锁好像根本没生效。

解决方案 »

  1.   

    自己搞错了,先鄙视一下自己,HBM配置写错了
    原来的 <property name="version" column="version" type="int" />
    应该是 <version name="version" column="version" />
    但现在仍然有问题,就是load2个方法运行后再从断点运行load1的时候load1为什么不会抛出异常??
      

  2.   

        请问楼主load1为什么要抛出异常??