作者:颓废胖胖2502908443 | 来源:互联网 | 2023-01-18 19:35
异常如下:Exceptioninthreadmainorg.springframework.orm.hibernate3.HibernateSystemException:identif
异常如下:
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里面id的type和java文件里面的不一样!
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,问题就出现在这里!