Spring Throwing CannotCreateTransactionException

时间:2018-05-30 04:42:12

标签: spring spring-boot spring-data-jpa

场景是我想在DB关闭时处理异常。

我的假设是抛出DataAccessException。但是,当我将数据库降低时,我从存储库方法获得的异常是CannotCreateTransactionException。这是对的。

我的应用程序是Spring CommandLine应用程序,下面是我如何访问它的代码

CustomerRepository cr = appContext.getBean(CustomerRepository.class);
    cr.exists(customerId);

它按预期工作但是当数据库关闭时,为什么它会抛出CannotCreateTransactionException。或者我对DataAccessException的理解是错误的。

DataAccessException何时到来以及CannotCreateTransactionException何时到来?

1 个答案:

答案 0 :(得分:1)

如果检查源代码,您将看到{ "ProjectID" : "5a042ba02af18ac8388bd3c0", "Phase" : "Analysis", "Task" : "Analysis", "Comments" : "2", "TaskType" : "DELIVERY", "Items" : "CRI", "UserName" : "Admin", "IsBillable" : true, "Date" : "29-05-2018", "Hours" : 4.0 } { "ProjectID" : "5a042ba02af18ac8388bd3c0", "Phase" : "Analysis", "Task" : "Analysis", "Comments" : "8", "TaskType" : "DELIVERY", "Items" : "Others", "UserName" : "Admin", "IsBillable" : true, "Date" : "28-05-2018", "Hours" : 4.0 } { "ProjectID" : "5a042ba02af18ac8388bd3c0", "Phase" : "Analysis", "Task" : "Analysis", "Comments" : "4", "TaskType" : "DELIVERY", "Items" : "Others", "UserName" : "Admin", "IsBillable" : true, "Date" : "28-05-2018", "Hours" : 4.0 } 及其子类用于在访问表中的数据时处理所有类型的错误,而不是DB。就像记录被其他交易锁定一样,会有某种DataAccessException

如果在访问数据库期间停止数据库,则错误可能与数据库驱动程序和数据源库相关。例如,您是否有连接池。

所以,我认为你无法指定当数据库关闭时抛出哪个异常。