identifier of an instance ... altered from num1 to num2

Hibernate报错。。

Hibernate的提示错误 
Caused by: org.hibernate.HibernateException: 
identifier of an instance of ... is alterde from 1 to 5 

是下面这段代码报的错 
Java代码   收藏代码
  1. public void insertRelation(Object obj,List list1)  
  2.     {  
  3.         Object obj= new Object ();  
  4.   
  5.         for (int i = 0; i < list1.size(); i++)   
  6.         {  
  7.            service.insert(obj);  
  8.         }  
  9.           
  10.     }  



这个错误是由于在一个事务中更新了主键,而主键是不能被更新的. 
这段代码的错误在Object obj= new Object (); 
这句代码放在for循环的外面,因此每次循环插入的时候,Hibernate认为只是一个对象,主键被更新,因此报错,如果放在for循环里面,就正常了,每次插入都是一个新的对象. 
正确的代码如下 
Java代码   收藏代码
  1. public void insertRelation(Object obj,List list1)  
  2.     {  
  3.           
  4.         for (int i = 0; i < list1.size(); i++)   
  5.         {  
  6.                       Object obj= new Object ();  
  7.   
  8.             service.insert(obj);  
  9.         }  
  10.           
  11.     }  


from:http://lg-aku.iteye.com/blog/518584

你可能感兴趣的:(java,Hibernate,object)