下面是我的代码:
@SuppressWarnings("unchecked")
public List<?> get(String hql, Object[] args) {
Session s = sf.getCurrentSession();
List<T> rslt = null;
Transaction ts = s.beginTransaction();
try {
Query q = s.createQuery(hql);
for (int i = 0; i < (args == null ? 0 : args.length); ++i) {
q.setParameter(i, args[i]);
}
s.flush();
rslt = (List<T>)(q.list());
// ts.commit();
} catch (HibernateException e) {
ts.rollback();
log.error("从数据库中获取所有数据时出错!", e);
e.printStackTrace();
}
// if(rslt == null)
// throw new RecordNotFoundException();
return rslt;
}
以下是详细出错信息:java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$ValueIterator.next(HashMap.java:822)
at org.hibernate.pretty.Printer.toString(Printer.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:120)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at cn.ijser.DAO.Impl.BaseDAO.get(BaseDAO.java:136)
at cn.ijser.Services.UserGroupService.getByName(UserGroupService.java:91)
at cn.ijser.InitDataTest.insertUser(InitDataTest.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)诡异的是:有时候我DEBUG一步一步,就不会出错,而直接运行基本总会出这个错。。在网上也查了半天,无果。怎么办呢?
@SuppressWarnings("unchecked")
public List<?> get(String hql, Object[] args) {
Session s = sf.getCurrentSession();
List<T> rslt = null;
Transaction ts = s.beginTransaction();
try {
Query q = s.createQuery(hql);
for (int i = 0; i < (args == null ? 0 : args.length); ++i) {
q.setParameter(i, args[i]);
}
s.flush();
rslt = (List<T>)(q.list());
// ts.commit();
} catch (HibernateException e) {
ts.rollback();
log.error("从数据库中获取所有数据时出错!", e);
e.printStackTrace();
}
// if(rslt == null)
// throw new RecordNotFoundException();
return rslt;
}
以下是详细出错信息:java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
at java.util.HashMap$ValueIterator.next(HashMap.java:822)
at org.hibernate.pretty.Printer.toString(Printer.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:120)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
at cn.ijser.DAO.Impl.BaseDAO.get(BaseDAO.java:136)
at cn.ijser.Services.UserGroupService.getByName(UserGroupService.java:91)
at cn.ijser.InitDataTest.insertUser(InitDataTest.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)诡异的是:有时候我DEBUG一步一步,就不会出错,而直接运行基本总会出这个错。。在网上也查了半天,无果。怎么办呢?
解决方案 »
- tomcat6.0+mysql5.5的数据库连接池,求指点
- hibernate 连 oracle select常量 问题,请高手赐教
- 项目从myeclipse迁移到Lomboz需要修改什么啊
- 一个关于validator验证问题,十分急,分不够立刻加!!!!
- JAVA开发短信收发软件
- hibernate,关于xml和表的先后生成顺序问题
- 请教关于session的问题
- mybatis对象映射的问题
- 100分求jfreechart如何画平滑曲线
- eclipse 用lomboz插件与jboss3.0.8-tomcat的整合问题!
- Caused by: java.lang.NullPointerException无法解决在别的项目上能运行,这个是服务启动时候我想写入application
- AOP 切点的问题
List<T> rslt = new ArrayList<T>();
Session s = sf.getCurrentSession();
Transaction ts = s.beginTransaction();
try {
Query q = s.createQuery(hql);
for (int i = 0; i < (args == null ? 0 : args.length); ++i) {
q.setParameter(i, args[i]);
}
for(Iterator<T> it = q.iterate(); it.hasNext();) {
rslt.add(it.next());
}
// rslt = (List<T>)(q.list());
// ts.commit();
} catch (HibernateException e) {
ts.rollback();
log.error("从数据库中获取所有数据时出错!", e);
e.printStackTrace();
}
// if(rslt == null)
// throw new RecordNotFoundException();
return rslt;
}采用这种方式便可以,谁能给解释下呢?