Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我是否需要以某种方式清除休眠异常?_Java_Hibernate_Exception_Transactions - Fatal编程技术网

Java 我是否需要以某种方式清除休眠异常?

Java 我是否需要以某种方式清除休眠异常?,java,hibernate,exception,transactions,Java,Hibernate,Exception,Transactions,我在以以下方式保存数据时执行异常检查: try { session.beginTransaction(); session.update(person); session.getTransaction().commit(); } catch(Exception e) { session.getTransaction().rollback(); log.error("Error saving p

我在以以下方式保存数据时执行异常检查:

    try {
        session.beginTransaction();
        session.update(person);
        session.getTransaction().commit();
    }
    catch(Exception e) {
        session.getTransaction().rollback();
        log.error("Error saving person to database", e);
    }
尽管如此,我的申请还是被终止了,只是后来有个例外


(我进行此检查是为了避免数据截断错误。是否有方法检查数据截断而不在Hibernate中引发异常?

当引发Hibernate异常时,您不能再使用导致异常的会话。回滚是自动完成的

如果要在异常后继续,有两种可能:

  • 扔掉旧会话,创建一个新会话

  • 使用无状态会话而不是会话。出现异常后,可以使用无状态会话。在无状态会话中,您必须手动执行回滚

  • 通常情况下,您将执行解决方案1


    解决方案2。如果您故意引发异常,并且您有一种特殊的方式对其作出反应,则此选项非常有用。(例如,insert操作中出现索引冲突异常,异常发生后,您将执行更新而不是insert。)

    导致应用程序终止的其他异常是什么?发布堆栈跟踪。