您的位置:首页 > 其它

getHibernateTemplate().saveOrUpdateAll(list)只保存了最后一条

2014-05-22 18:11 459 查看
循环插入一批文件信息到MySql数据库,用getHibernateTemplate().saveOrUpdateAll(list)只保存了最后一条。
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条,却都是最后加入的实体。虽然简单,却还是出错,实在不应该,记下来,提醒自己。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: