关于Hibernate的.多个线程同时并发,如何解决异常
多个线程同时并发
同时
new 一个业务对象
{
UserModel model = new UserModel();
然后删除
model.deleteUser(al);
}
删除的代码如下
Session session = dao.getSession();
Transaction ta = session.beginTransaction();
启动事务
ta.begin();
if (dao.findById(userDTO.getId()) != null) {
session.clear();
dao.delete(user);
} else {
ystem.out.println("not delete,That ID haes ceased to exist:"+ userDTO.getId());
}
ta.commit();
session.close();
结果抛出异常
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:93)
at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:79)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.linkey.model.UserModel.deleteUser(UserModel.java:116)
at com.linkey.test.UserModelTest.del(UserModelTest.java:85)
at com.linkey.test.TestThreads$Inc.run(TestThreads.java:18)
at java.lang.Thread.run(Unknown Source)