identifier of an instance of xxx was altered from 1 to 1

今天测试一个项目,这个项目使用了hibernatespring,报错信息如下:

Xml代码  

  1. org.springframework.orm.hibernate4.HibernateSystemException: identifier of an instance of com.tdr.push.entity.ThreadPushFail was altered from 1 to 1; nested exception is org.hibernate.HibernateException: identifier of an instance of com.tdr.push.entity.ThreadPushFail was altered from 1 to 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的属性保持一致。

 

参考:http://blog.csdn.net/lsbhjshyn/article/details/5287554

时间: 2024-11-03 17:48:21

identifier of an instance of xxx was altered from 1 to 1的相关文章

【hibernate】错误:org.hibernate.HibernateException: identifier of an instance of com.agen.entity.Monthdetail was altered from xx to xx

所报错误: org.hibernate.HibernateException: identifier of an instance of com.agen.entity.Monthdetail was altered from 40288f8e5ac675fe015ac67725c40001 to 444b8583-c965-4457-9e44-907b31cf3b92   错误位置:     更改方法:  

hibernate5(8)操纵对象入门[3]操控对象封装方法

为什么要说是"封装方法"呢?因为它帮我们封装好了底层的增删改查操作,直接调用相应方法即可灵活地操作我们数据库数据.它们由Session接口提供,下面我们通过实例一一分析这些方法. 1.save方法 Session 的 save() 方法使一个临时对象转变为持久化对象 Session 的 save() 方法完成以下操作: 1. 把 User对象加入到 Session 缓存中,使它进入持久化状态 2. 选用映射文件指定的标识符生成器,为持久化对象分配唯一的 OID.在 使用代理主键的情况下

【OH】Glossary Oracle词汇表(下)

[OH]Glossary Oracle词汇表(下) Oracle? Database Installation Guide 11g Release 2 (11.2) for Linux E47689-05 Glossary ● Oracle Automatic Storage Management disk group A set of disk devices that Oracle Automatic Storage Management (Oracle ASM) manages as a

ORA-28001错误解决方法

ORA-28001: the password has expired Cause: The user"s account has expired and the password needs to be changed Action: change the password or contact the DBA 程序连接DB服务器时报错: 13-04-22 17:32:15 [ERROR] com.sohu.game.Main {Main.java:102} - 统计失败: java.sql.

springmvc-spring使用JUnit时autowired报错,controller里面autowired可以的

问题描述 spring使用JUnit时autowired报错,controller里面autowired可以的 试了好多办法还是不行,不知道哪里配错了..麻烦大神帮看一下 异常信息: SEVERE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@5f98de7] to p

Canal AdminGuide

背景    先前开源了一个开源项目: [阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费]     本文主要是介绍一下如何部署&使用   环境要求 1. 操作系统     a.  纯java开发,windows/linux均可支持     b.  jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本.    2. mysql要求    a. 目前canal支持mysql 5.5版本以下,对mysql5.6暂不支持,(mysql4.x版本没有经过严

[20121207]实例与参数设置.txt

[20121207]实例与参数设置.txt SQL> select * from v$version where rownum BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production SQL> show parameter

Oracle system identifier(SID) &quot;xxx&quot; alread exits. Specify another SID

案例环境:                操作系统    :Oracle Linux Server release 5.7 64 bit                数据库版本:Oracle Database 10g Release 10.2.0.4.0 - 64bit Production 案例介绍: 在一个刚刚安装实例的服务器,使用dbca创建新的数据库时,在指定全局数据库名(Global Database Name)后,点击下一步时.报如下错误:The Oracle system ide

Linux 日志报错 xxx blocked for more than 120 seconds

        监控作业发现一台服务器(Red Hat Enterprise Linux Server release 5.7)从凌晨1:32开始,有一小段时间无法响应,数据库也连接不上,后面又正常了.早上检查了监听日志,并没有发现错误信息.但是检查告警日志,发现有下面错误信息: Thread 1 advanced to log sequence 19749 (LGWR switch)   Current log# 2 seq# 19749 mem# 0: /u01/oradata/epps/r