异常笔记(3)--illegally attempted to associate a proxy with two open Sessions

在ssh框架中要实现一个功能:先将查出一个集合数据,然后批量的修改集合中一个实体类中的一个字段,添加事物的处理,源代码如下:

public List<CrawlerConfigure>  getIncrementCrawlerConfigure() {
		List<CrawlerConfigure>	configures = hbCrudDAO.getHibernateTemplate().findByNamedQuery("getIncrementCrawlerConfigure");//from CrawlerConfigure as o where o.flag = 0;
		 SessionFactory sessionFactory =hbCrudDAO.getSessionFactory();
			Session session = sessionFactory.openSession();
			session.beginTransaction();
			int i = 0;
			for (CrawlerConfigure configure : configures) {
					//将增量的标记为设置为1
					configure.setFlag(1);
			        session.saveOrUpdate(configure);
			        i++;
			    if (i % 20 == 0) {
			        session.getTransaction().commit();
			        session.flush();
			        session.clear();
			        session.beginTransaction();
			    }
			
			}
			session.getTransaction().commit();
			session.close();
	
	return configures;
}


控制台的错误:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: illegally attempted to associate a proxy with two open Sessions

at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:135)
at com.sun.proxy.$Proxy29.getIncrementCrawlerConfigure(Unknown Source)

at www.skiff.com.webservice.client.TestClient.main(TestClient.java:37)


解决方案:


public List<CrawlerConfigure>  getIncrementCrawlerConfigure() {
		String sql = "select * from  ir_item.crawler_configure as o where o.flag = 0";
		List result = null;
//		List<CrawlerConfigure>	configures = hbCrudDAO.getHibernateTemplate().findByNamedQuery("getIncrementCrawlerConfigure");
		List<CrawlerConfigure>	configures = null;
		 SessionFactory sessionFactory =hbCrudDAO.getSessionFactory();
			Session session = sessionFactory.openSession();
			Query query = session.createSQLQuery(sql).addEntity(CrawlerConfigure.class);
			configures = query.list();
			System.out.println(configures.toString());
			session.beginTransaction();
			int i = 0;
			for (CrawlerConfigure configure : configures) {
					//将增量的标记为设置为1
					configure.setFlag(1);
			        session.saveOrUpdate(configure);
			        i++;
			    if (i % 20 == 0) {
			        session.getTransaction().commit();
			        session.flush();
			        session.clear();
			        session.beginTransaction();
			    }
			
			}
			session.getTransaction().commit();
			session.close();
	
	return configures;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值