开发者社区> 问答> 正文

Java Hibernate Postgres:当前事务中止,命令被忽略

问题:每当数据库对其执行失败的查询时(测试用例违反主键约束),数据库将变得完全不可用

这是下面的代码,如果违反了主键约束,则会导致数据库进入错误状态。会话是类级别的变量

public synchronized void dbCreate(Object o) {
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.save(o);
            session.flush();
            tx.commit();
        } catch (Exception e) {
            if (tx != null) tx.rollback();
        } finally {
            if (tx != null){
                if (tx.isActive()) {
                    tx.rollback();
                }
            }
            if (session!= null) //keep session in a good state (put errors)
            {
                session.flush();
                session.clear();
            }

        }

展开
收起
垚tutu 2019-12-04 16:57:32 590 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载