Hibernate学习: 异常 identifier of an instance of com.zhssh.vo.TUser was altered from 1 to 1

异常如下:
Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of com.zhssh.vo.TUser was altered from 1 to 1; nested exception is org.hibernate.HibernateException: identifier of an instance of com.zhssh.vo.TUser was altered from 1 to 1
Caused by: org.hibernate.HibernateException: identifier of an instance of com.zhssh.vo.TUser was altered from 1 to 1
 at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:51)
 at org.hibernate.event.def.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:150)
 at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:106)
 at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
 at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
 at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
 at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
 at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
 at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
 at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
 at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:832)
 at com.zhssh.spring.dao.TUserDAO.findAll(TUserDAO.java:113)
 at com.zhssh.spring.dao.test.TUserDAOTest.main(TUserDAOTest.java:25)


遇到了这样的问题.Google了一把,是因为hbm里面idtypejava文件里面的不一样!

TUser.java
    

1 private long id;
2 private String username;
3 private String password;
4 private int age;


TUser.hbm.xml

 1 <hibernate-mapping>
 2     <class name="com.zhssh.vo.TUser" table="t_user" schema="dbo" catalog="mbase">
 3         <id name="id" type="java.lang.Integer">
 4             <column name="id" />
 5             <generator class="native" />
 6         </id>
 7         <property name="username" type="java.lang.String">
 8             <column name="username" length="20" not-null="true" />
 9         </property>
10         <property name="password" type="java.lang.String">
11             <column name="password" length="20" not-null="true" />
12         </property>
13         <property name="age" type="java.lang.Integer">
14             <column name="age" />
15         </property>
16     </class>
17 </hibernate-mapping>


映射文件中id的类型是Integer,也就是int类型的,而实体类中id的类型是long,问题就出现在这里!

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值