getHibernateTemplate().saveOrUpdateAll(list)只保存了最后一条
2014-05-22 18:11
459 查看
循环插入一批文件信息到MySql数据库,用getHibernateTemplate().saveOrUpdateAll(list)只保存了最后一条。
Debug逐步分析,发现list确实是那N条数据。在这里没有仔细看,只大概的看了是不是那几条数据。
最后发现把实体add给list的时候,实体在for循环外面。我们知道java每new一次才算分配一个地址给这个类,所以虽然在for里面多次给实体set,但是每次都把上次的数据给覆盖掉了。
写了个小例子:
从上面可以看出来,虽然数据是5条,却都是最后加入的实体。虽然简单,却还是出错,实在不应该,记下来,提醒自己。
Debug逐步分析,发现list确实是那N条数据。在这里没有仔细看,只大概的看了是不是那几条数据。
最后发现把实体add给list的时候,实体在for循环外面。我们知道java每new一次才算分配一个地址给这个类,所以虽然在for里面多次给实体set,但是每次都把上次的数据给覆盖掉了。
写了个小例子:
public static void main(String[] args) { User user = new User(); List<User> list = new ArrayList<User>(); for(int i=0;i<5;i++){ user.setName("i"+i); list.add(user); } System.out.println("size=="+list.size()); for(int i=0;i<list.size();i++){ System.out.println("entity:"+list.get(i)); System.out.println("name:"+list.get(i).getName()); } }打印的结果是:
size==5 entity:com.thread.User@c17164 name:i4 entity:com.thread.User@c17164 name:i4 entity:com.thread.User@c17164 name:i4 entity:com.thread.User@c17164 name:i4 entity:com.thread.User@c17164 name:i4
从上面可以看出来,虽然数据是5条,却都是最后加入的实体。虽然简单,却还是出错,实在不应该,记下来,提醒自己。
相关文章推荐
- getHibernateTemplate().saveOrUpdate(t)不能更新
- getHibernateTemplate().saveOrUpdate 不执行也不报错可能的原因
- getHibernateTemplate().saveOrUpdate 不运行
- 整合SSH中getHibernateTemplate()中的update()和saveOrUpdate()方法没反应
- getHibernateTemplate().save() 未保存到数据库问题之解决
- getHibernateTemplate().update()方法更新不了解决办法
- this.getHibernateTemplate().save(post);没有保存解决方法
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- Hibernate的各种保存方式的区别(save/persist/upadte/saveOrUpdate/merge/flush/lock)等
- getHibernateTemplate().update()方法执行后需flush,否则无法更新
- Spring or hibernate saveOrUpdateAll 偶然失效
- 为什么Spring4中的对于hibernate3的HibernateTemplate已经把saveOrUpdateAll删除掉了
- SSH里面使用getHibernateTemplate().save(s)不能保存到数据库的问题
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
- hibernate中各种保存方法的区别 save persist update saveOrUpdate merge lock
- getHibernateTemplate().save ()不能保存到数据库的问题
- getHibernateTemplate().save();不能保存数据到数据库解决办法
- hibernate中的update()和saveOrUpdate()的区别,session的load()和get()的区别
- hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别