Hibernate Session 在 ConstraintViolationException 后失效

2023-11-27

在抛出约束违反异常后,是否有任何方法可以继续使用线程绑定的休眠会话?我在这里举一个简短的例子:

    Parent other=service.load(33); // loads a new parent
    try {
        Parent p=new Parent();
        p.setName("A name");
        service.save(p); // a @Transactional spring service class, throws ConstraintViolationException - name should be at least 15 characters long
    } catch (ConstraintViolationException e){
        // i would like to handle validation errors and proceed normally
        // but the session is allready closed here
    }
    System.out.println("Children: " + other.getChildren()); // lazy initialization exception, even when using opensessioninview

从现在开始,休眠会话完全无用,即使对于只读操作(例如使用 OpenSessionInView 模式在视图中渲染惰性集合)也是如此。


Session的文档指出如果会话抛出异常,则必须回滚事务并丢弃会话。异常发生后Session的内部状态可能与数据库不一致。.

AFAIK,没有办法从中恢复,我记得工作中有人警告我不要使用 session-per-request/OpenSessionInView-pattern 因为这类问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate Session 在 ConstraintViolationException 后失效 的相关文章

随机推荐

  • Angular 4 中的升序和降序排序

    为什么排序功能有效 th Transaction Date i class fa i th 虽然这个不起作用 th User i class fa i th
  • 为什么 Jquery 只影响第一个 div 元素? [复制]

    这个问题在这里已经有答案了 我正在使用 替换 函数来删除 div 中的所有非数字值 看来 Jquery 替换只影响第一个元素 这是我的 Jquery comment each function var thz this var repl t
  • 如何在 Windows 上使用 Python 的协议缓冲区?

    我一直在尝试在我的 Python 程序中使用协议缓冲区 但无法让它工作 我正在运行 Windows 8 计算机 并尝试过 Python 2 7 6 和 Python 3 3 我下载了Python的二进制protocol buffer编译器并
  • AFNetworking 2 响应错误(内容类型:text/html 而不是 JSON)

    在尝试了几乎所有关于该主题的答案之后 我都没有找到解决我的问题的有效答案 问题 所以我使用以下方法实现了我的应用程序的上传部分AFNetworking 2 0 3移植后AFNetworking 1 3 void commandWithPar
  • Code-First EF4 中的多对多关系

    如何在 EF4 Code First CTP3 中表示多对多关系 例如 如果我有以下课程 class User public int Id get set public string Name get set public ICollect
  • 如何获取 iOS 14 @main 文件中的 UIWindow 值?

    我可以访问didFinishLaunchingWithOptions通过下面的实现 但是我需要UIWindow多变的 我不知道如何得到它 我正在使用 Xcode 12 beta iOS14 SwiftUI 生命周期 import Swift
  • adb shell 命令检查 apk 是否已调试或发布签名?

    如何检查 apk 是否经过调试或发布签名 有没有直接的adb命令来验证apk签名 尝试了以下方法dumpsys and aapt命令 但我无法找到确切的标志 adb shell dumpsys package
  • AudioToolbox - 录音时的回调延迟

    最近 我一直在为 iOS 开发一个非常具体的项目 我的研究使我得到了几乎最终的代码 我已经解决了迄今为止发现的所有极端困难 但在这个问题上我似乎没有任何线索 关于原因或解决它的可能性 我设置了音频队列 采样率 44100 格式 Linear
  • 获取函数参数类型作为元组

    Problem 给定任何函数 或可调用 类型Function 如何将其所有参数类型作为元组类型获取 例如 我需要一个特质function traits
  • M_PI 为负值的 CGAffineTransformMakeRotation

    我在用着CGAffineTransformMakeRotation旋转一个UIView在动画块内 我想将其逆时针旋转180 但是当我把 myView animateWithDuration 0 5 myView transform CGAf
  • 关于 Laravel 5.1 安全性

    我是 Laravel 5 1 开发项目的新手 我想了解如何避免安全风险 Laravel 可以保护哪些类型的攻击 什么样的攻击 Laravel 是不安全的 使用中间件是处理授权的好方法 我知道 Laravel 对于 CSRF 攻击是安全的 有
  • pthread:一个 printf 语句在子线程中打印两次

    这是我的第一个 pthread 程序 我不知道为什么 printf 语句在子线程中打印两次 int x 1 void func void p x x 1 printf tid ld x is d n pthread self x retur
  • 如何从列表中删除空列表(Java)

    我已经搜索过这个 但它是用其他语言编写的 例如Python或R 我在列表中有列表 我想删除空列表 例如 abc def ghi jkl mno 我想 abc def ghi jkl mno 如何从列表中删除空列表 谢谢 你也可以尝试这个 l
  • 操作码 (APC/XCache)、Zend、Doctrine 和自动加载器

    我正在尝试使用 APC 或 XCache 作为操作码来缓存我的 php 页面 我将它与 Zend 和 Doctrine 一起使用 但自动加载器出现问题 如果我尝试使用 APC 我会得到以下信息 Fatal error spl autoloa
  • 实体框架和 SQLite,终极操作方法

    我正在尝试让 Entity Framework 6 4 4 2020 年夏季的最新版本 与 SQLite 1 0 113 1 也是 2020 年夏季的最新版本 一起工作 我找到了很多关于如何执行此操作的信息 但这些信息并不总是有帮助 它们常
  • Android 模拟器实例不显示“允许 USB 调试”确认以进行身份​​验证

    我正在尝试在 Android Studio 的 Android 模拟器中运行我的移动应用程序 当我运行该应用程序时 它会提示我选择模拟器实例 当我选择模拟器实例时 应用程序的构建将启动 并且所选的模拟器将启动 构建完成后 Android S
  • 从数据框中插入 RMySQL

    我正在尝试使用 RMySQL 将数据添加到 MySQL 表 我只需要一次添加一行 但它不起作用 我想做的就是这个 dbGetQuery con INSERT INTO names VALUES data 1 1 data 1 2 所以我正在
  • 新创建的 TFS 2010 迭代不可见

    我已经在 TFS 2010 中创建了一个新的迭代 并且不想在新的故事和查询中使用它 但是 迭代不会显示在新的故事窗口中 刷新VS 重新启动VS 切换到其他项目 没有任何帮助 我是团队项目中的项目管理员 并使用我尝试使用它的同一用户创建了迭代
  • 反应原生 Flatlist 导航

    我收到错误 类型错误 无法读取未定义的属性 导航 我不明白如何将导航组件传递给每个子组件 因此当用户按下某个项目时 它可以使用 React Navigation 导航到 employeeEdit 组件 我是新手 如果这是显而易见的 我很抱歉
  • Hibernate Session 在 ConstraintViolationException 后失效

    在抛出约束违反异常后 是否有任何方法可以继续使用线程绑定的休眠会话 我在这里举一个简短的例子 Parent other service load 33 loads a new parent try Parent p new Parent p