org.hibernate.ObjectNotFoundException: No row with the given identifier exists

矫情吗;* 2022-07-12 10:30 327阅读 0赞

1、错误描述

  1. Exception in thread "main" org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.you.hibernate.model.TStudentInfo#1]
  2. at org.hibernate.internal.SessionFactoryImpl$1$1.handleEntityNotFound(SessionFactoryImpl.java:247)
  3. at org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyInitializer.java:171)
  4. at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:160)
  5. at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:195)
  6. at org.hibernate.engine.internal.StatefulPersistenceContext.unproxyAndReassociate(StatefulPersistenceContext.java:667)
  7. at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:90)
  8. at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
  9. at org.hibernate.internal.SessionImpl.fireDelete(SessionImpl.java:946)
  10. at org.hibernate.internal.SessionImpl.delete(SessionImpl.java:925)
  11. at com.you.hibernate.dao.StudentDao.deleteStuInfo(StudentDao.java:116)
  12. at com.you.hibernate.dao.StudentDao.main(StudentDao.java:167)

2、错误原因

  1. public static void deleteStuInfo(int id)
  2. {
  3. Session session = HibernateSessionFactory.getSession();
  4. session.beginTransaction();
  5. TStudentInfo student = (TStudentInfo)session.load(TStudentInfo.class, id);
  6. session.delete(student);
  7. session.getTransaction().commit();
  8. System.out.println("删除成功!");
  9. }
  10. /**
  11. * 方法描述:
  12. * 创建作者:游海东
  13. * 创建日期:2017-2-20
  14. * 创建时间:下午5:20:14
  15. * 方法名称:main
  16. * 方法类型:StudentDao
  17. * 返回类型:void
  18. * @param args
  19. */
  20. public static void main(String[] args)
  21. {
  22. int id = 1;
  23. deleteStuInfo(id);
  24. }
  25. 由于id=1的记录已经删除,再次调用删除方法,会报错

3、解决办法

(1)首先,在调用删除方法前需要按照ID进行查询一次

(2)然后,如果该ID的记录存在,才能调用删除方法

(3)最后,调用删除操作进行删除记录

发表评论

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

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

相关阅读