gpt4 book ai didi

hibernate - 在Hibernate异常后可以使用Grails安全的方式执行更多查询吗?

转载 作者:行者123 更新时间:2023-12-02 15:29:05 28 4
gpt4 key购买 nike

在我的服务中,我期望某种异常(DataIntegrityViolationException),这是数据库上唯一的阻止插入的结果。可以,并且可以实际发生。我一直在使用Grails控制台来获取正确的异常类型,以便从那里继续。但是,我收到此消息:

org.hibernate.AssertionFailure: null id in   
<my-domain-class> entry (don't flush the Session after an exception occurs)

现在,我不确定之后如何继续。即使发生此特定错误,我也需要在其他表中执行一些删除操作-基本上,我认为插入工作正常,并且代码仅从那里继续。

从Hibernate的 Angular 来看,发生这种错误之后是否安全?我必须怎么做才能进入一致状态,以便对其他服务的进一步调用(但仍是相同的HTTP请求)可以正确执行HQL语句?

编辑

基本工作流程:
  • 服务A尝试将
  • 插入数据库
  • 不管成功还是失败(唯一违反),服务A都应调用服务B
  • 服务B使用不同的域执行一些选择,然后删除一个重要的
  • Controller 返回
  • 最佳答案

    发生此类异常后, session 可能处于无效状态。任何后续的持久性操作都应与新 session 一起执行。您可以使用以下命令在Grails中打开一个新 session :

    SomeDomainClass.withNewSession {
    // code that uses the new session goes here
    }

    关于hibernate - 在Hibernate异常后可以使用Grails安全的方式执行更多查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841397/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com