identifier of an instance of com.you.hibernate.model.TStudentInfo was altered from 6 to 7

红太狼 2022-07-12 09:51 161阅读 0赞

1、错误描述

  1. Exception in thread "main" org.hibernate.HibernateException: identifier of an instance of com.you.hibernate.model.TStudentInfo was altered from 6 to 7
  2. at org.hibernate.event.internal.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:82)
  3. at org.hibernate.event.internal.DefaultFlushEntityEventListener.getValues(DefaultFlushEntityEventListener.java:194)
  4. at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:156)
  5. at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:225)
  6. at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
  7. at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
  8. at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)
  9. at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)
  10. at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
  11. at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
  12. at com.you.hibernate.dao.StudentDao.saveStuInfo(StudentDao.java:73)
  13. at com.you.hibernate.dao.StudentDao.main(StudentDao.java:107)

2、错误原因

  1. 利用Hibernate批量添加,传入实体类参数,这里是用for循环进行批量添加;每循环一次,需要重新实例化实体类,但是却将实体类实例化放在循环外面
  2. public static void main(String[] args)
  3. {
  4. TStudentInfo student = new TStudentInfo();
  5. for(int i=10001;i<=100000;i++)
  6. {
  7. student.setId(i);
  8. student.setStuNo(i);
  9. student.setStuName("胡思思"+i);
  10. student.setStuAge(20);
  11. if(i%2==1)
  12. {
  13. student.setStuSex("女");
  14. }
  15. else
  16. {
  17. student.setStuSex("男");
  18. }
  19. student.setStuQq(""+i+"45744");
  20. student.setStuAddr("湖南省长沙市");
  21. saveStuInfo(student);
  22. }
  23. }

3、解决办法

  1. public static void main(String[] args)
  2. {
  3. for(int i=10001;i<=100000;i++)
  4. {
  5. TStudentInfo student = new TStudentInfo();
  6. student.setId(i);
  7. student.setStuNo(i);
  8. student.setStuName("胡思思"+i);
  9. student.setStuAge(20);
  10. if(i%2==1)
  11. {
  12. student.setStuSex("女");
  13. }
  14. else
  15. {
  16. student.setStuSex("男");
  17. }
  18. student.setStuQq(""+i+"45744");
  19. student.setStuAddr("湖南省长沙市");
  20. saveStuInfo(student);
  21. }
  22. }

发表评论

表情:
评论列表 (有 0 条评论,161人围观)

还没有评论,来说两句吧...

相关阅读