日期:2014-05-18  浏览次数:20692 次

我用for循环存数据怎么hibernate包数据重复错误
报错如下:
a different object with the same identifier value was already associated with the session: [com.erp.auth.model.Users#?234123]

我查了下是hibernate的数据重复错误。我在存的时候使用的是save而不是saveOrUpdate啊,为什么回报这个错误



我的action:

for (int i = 0; i < 10; i++) {
Users users = new Users();
users.setUserId(UUID.randomUUID().toString());
users.setUserName("123");
users.setPassWord("ttt");
userServiceI.saveUser(users);
}

------解决方案--------------------
把userid打出来看看,检查下表结构主键的设计。
------解决方案--------------------
id如果设置为主键,那就肯定会报错,主键是唯一的。这个循环一出来就违背了主键的唯一性。
------解决方案--------------------
你的主键是id还是uuid 如果是id的话会报错,是uuid的话也会报错,如果主键是id请把id设置为自主增长,或者赋值的时候id要赋值也就是user.serUserId(i); 要保证id不能重复,如果主键是uuid的话,你要保证随机生成的uuid不能有重复的数值。