zoukankan      html  css  js  c++  java
  • org.hibernate.ObjectNotFoundException: No row with the given identifier exists

    1、错误描述

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

    2、错误原因

    public static void deleteStuInfo(int id)
    	{
    		Session session = HibernateSessionFactory.getSession();
    		session.beginTransaction();
    		
    		TStudentInfo student = (TStudentInfo)session.load(TStudentInfo.class, id);
    		session.delete(student);
    		session.getTransaction().commit();
    		System.out.println("删除成功!");
    	}
    
    /**	
    	 * 方法描述:
    	 * 创建作者:游海东
    	 * 创建日期:2017-2-20
    	 * 创建时间:下午5:20:14
    	 * 方法名称:main
    	 * 方法类型:StudentDao
    	 * 返回类型:void
    	 * @param args
    	 */
    	public static void main(String[] args) 
    	{
    		int id = 1;
    		deleteStuInfo(id);
    	}

            由于id=1的记录已经删除,再次调用删除方法,会报错


    3、解决办法

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

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

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

  • 相关阅读:
    编码问题
    apache 2.4 httpd 2.4.6 反向代理后端的服务为HTTPS https 基于centos7
    ucore系统 eclipse-cdt实验环境准备
    openshift v1.5 不能登录system:admin 问题
    filebeat v6.3 如何增加ip 字段
    filebeat v6.3 多行合并的步骤 多个表达式同时匹配
    如何一步步使用国内yum源一键安装openstack-ocata版本基于centos7
    windows 定时删除N天前日志脚本
    logrotate 如何执行日志按照大小切分
    virtualbox 基于nat模式搭建局域网并且和宿主机通信
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313938.html
Copyright © 2011-2022 走看看