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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |