当前位置: 代码迷 >> J2EE >> deleteAll()方法出现错误,Batch update returned unexpected row …并发的有关问题
  详细解决方案

deleteAll()方法出现错误,Batch update returned unexpected row …并发的有关问题

热度:296   发布时间:2016-04-22 02:33:42.0
deleteAll()方法出现异常,Batch update returned unexpected row ……,并发的问题?
sql server数据库,主键是自增int,spring管理hibernate
spring配置文件
XML code
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">        <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver">        </property>        <property name="url" value="jdbc:microsoft:sqlserver://localhost:1433">        </property>        <property name="username" value="sa"></property>        <property name="password" value="sa"></property>    </bean>    <bean id="sessionFactory"        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">        <property name="dataSource">            <ref bean="dataSource" />        </property>        <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">                    org.hibernate.dialect.SQLServerDialect                </prop>            </props>        </property>        <property name="mappingResources">            <list>            <value>cn/tpexam/model/Tpexamtmp.hbm.xml</value>        </property>    </bean>

id主键生成器是native

代码继承了HibernateDaoSupport
出错的地方这样写的:
Java code
try {            this.getHibernateTemplate().deleteAll(list);            return true;        } catch (RuntimeException e) {            logger.error("deleteAll entity err:" , e);            throw e;        }

就在deleteAll处出的异常,list是通过getHibernateTemplate().find(hql);方法查到的List,在删除之前对这个表只有查询,没有保存更新插入等操作

而且这个异常似乎只有在多个页面同时访问时容易出现,跟并发有关系?

在网上找的都是update或者出现一对多的情况,删除时异常到底的什么原因呢?


------解决方案--------------------
1,检查数据库中的数据,看是否存在原来就不符合主外键关系的数据。
2,确保list集合中的数据均为持久状态。
------解决方案--------------------
报什么错误啊,你注意一下session别手动关闭了
------解决方案--------------------
仔细检查一下你的配置吧,以前我也经常出这样的问题
  相关解决方案