`
wengcang
  • 浏览: 14352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate 循环插入数据只插入一条的问题

阅读更多
    如果保存数据模块只用到了同一个session,完了直接返回,那么只要开启了事务便不会出现(循环插入数据只插入一条的问题)的问题,
    而当代码是同一个session执行了一个查询操作,然后继续执行保存操作,如下:

        
	@Override
	public List<Loan> fetchRaisingLoan(String loanId) {
		String hql = "from Loan loan where loan.status = '" + "raising' ";
		if(!loanId.equals("all")){
			hql = hql.concat(" and loan.id = '" + loanId + "'");
		}
		Session session = ht.getSessionFactory().getCurrentSession();
		Transaction tx = session.beginTransaction();
		List<Loan> list = session.createQuery(hql).list();
		tx.commit();
		return list;
	}
        //在controller层执行完以上查询后循环执行以下插入操作
        public void saveP2pToTable(CsaiP2pDataPojo csaiP2pDataPojo) {
		Session session = ht.getSessionFactory().getCurrentSession();
		 Transaction tx = null;
		 try {
			tx = session.beginTransaction();
			session.saveOrUpdate(csaiP2pDataPojo);
		} catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
		}finally{
			tx.commit();
			session.close();
		}
		//session.setFlushMode(FlushMode.AUTO);
	}

//之后会出现只插入一条数据的问题
//解决办法:将保存方法中的获取session的方法改为“openSession”即可
//原因:因为二级缓存中保存了第一次的pojo导致,当opensession时重新打开一个session,
//这样,hibernate会认为这缓存中的pojo和新插入的不是同一个,
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics