加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在SpringBoot应用程序启动时捕获Hibernate异常?

发布时间:2020-12-15 02:10:58 所属栏目:Java 来源:网络整理
导读:我正在尝试使用 Spring Boot 1.2.6和HibernateJpaAutoConfiguration.它很棒;这就是它“神奇地”由entityManager创建,并使用我的spring.jpa.*属性为我开箱即用. 但是,在数据库错误(凭据无效,数据库无法访问等)的情况下,我找不到一种在启动时捕获Hibernate异常
我正在尝试使用 Spring Boot 1.2.6和HibernateJpaAutoConfiguration.它很棒;这就是它“神奇地”由entityManager创建,并使用我的spring.jpa.*属性为我开箱即用.

但是,在数据库错误(凭据无效,数据库无法访问等)的情况下,我找不到一种在启动时捕获Hibernate异常的简洁方法.

我想我可以捕获所有BeanCreationException并检查根本原因,但这似乎是一个非常黑客:

ConfigurableApplicationContext context;
    try {
        SpringApplication app = new SpringApplication(Application.class);
        context = app.run(args);
    } catch (Exception e) {
        // check if it is a DB error.  
        if( ExceptionUtils.getRootCause(e) instanceof( HibernateException ) ){
            System.out.println( "You are having trouble with the DB: " + ExceptionUtils.getRootCauseMessage(e) );
        }
    }
    finally{
        // finished so close the context
        if( context != null )
            context.close();
    }

在不失去使用自动配置的能力的情况下,是否有更干净/更简洁的方法?另外,如果没有解析错误消息,有没有办法确定Hibernate / DB错误是什么(即:无效的信用证,未经验证的数据库等).

解决方法

您可以尝试捕获JDBCConnectionException,而不是捕获非常通用的HibernateException.这是用于数据库连接问题的HibernateException的子类(包括不正确的数据库设置).

https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/exception/JDBCConnectionException.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读