identifier of an instance was altered from XXXX to XXXX解決

標題問題出現的可能比較多,現在將原因及解決辦法彙總如下:

例子1:  因爲實體類中id的屬性和hbm.xml配置文件中id的屬性不一致造成的

實體類中的id屬性是:

Java代碼  收藏代碼
  1. public class ThreadPushFail {  
  2.     private long id;  
  3.     /*** 
  4.      * 推送消息的id 
  5.      */  
  6.     private long pushMessageId;  

 

hbm.xml配置文件中id的屬性:

Xml代碼  收藏代碼
  1. <hibernate-mapping>  
  2.     <class name="com.tdr.push.entity.ThreadPushFail" table="t_threadPushFail" lazy="true">  
  3.         <id name="id" type="int">  
  4.             <column name="ID" precision="19" scale="0">  
  5.                 <comment>主鍵id</comment>  
  6.             </column>  
  7.             <generator class="identity"/>  
  8.         </id>  

 一個是int,一個是long

解決方案:是id的屬性保持一致。


例子2:對象複製時導致,因爲hibernate的sessionFactory().getSession中不能存在2個相同id的對象

用BeanUtils.copyProperties(B,A)把A對象的所有屬性都copy的B對象中
並把B的主鍵setId(null)放空掉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章