hibernate saveOrUpdate抛出异常

来源:互联网 发布:php asp.net 编辑:程序博客网 时间:2024/06/09 22:59
环境:spring 1.0.2 hibernate2.1.4

代码:

public class Test{  
    private long id_;
    ...

MAPPING文件
    <class name="Test" table="test">
        <id name="id">
            <generator class="native"/>
        </id>
     ....
使用代码
    getHibernateTemplate().saveOrUpdate(test);

现象:
抛出异常
org.springframework.orm.hibernate.HibernateSystemException: Batch update row count wrong: 0;
nested exception is net.sf.hibernate.HibernateException: Batch update row count wrong: 0
net.sf.hibernate.HibernateException: Batch update row count wrong: 0
    at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:65)

解决:
    1、当改用getHibernateTemplate().save(test),成功。
    2、发现saveOrUpdate使用unsaved-value属性来决定save还是update,unsaved-value的default值是null,当标识符是空的时候保存。因为id的类型是long,default值为0,所以失败。
    3、修改

public class Test{  
    private long id_ = -1;
    ...

MAPPING文件
    <class name="Test" table="test">
        <id name="id"  unsaved-value="-1">
            <generator class="native"/>
        </id>
原创粉丝点击