diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListener.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListener.java index 199a62dda0e..c4442b56dd6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListener.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import org.jooq.SQLDialect; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator; +import org.springframework.jdbc.support.SQLExceptionSubclassTranslator; import org.springframework.jdbc.support.SQLExceptionTranslator; -import org.springframework.jdbc.support.SQLStateSQLExceptionTranslator; import org.springframework.util.Assert; /** @@ -114,7 +114,7 @@ final class DefaultExceptionTranslatorExecuteListener implements ExceptionTransl private SQLExceptionTranslator apply(SQLDialect dialect) { String dbName = getSpringDbName(dialect); return (dbName != null) ? new SQLErrorCodeSQLExceptionTranslator(dbName) - : new SQLStateSQLExceptionTranslator(); + : new SQLExceptionSubclassTranslator(); } private String getSpringDbName(SQLDialect dialect) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListenerTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListenerTests.java index ae1278889d1..d3ebb228e45 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListenerTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jooq/DefaultExceptionTranslatorExecuteListenerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package org.springframework.boot.autoconfigure.jooq; import java.sql.SQLException; +import java.sql.SQLSyntaxErrorException; import java.util.function.Function; import org.jooq.Configuration; @@ -93,12 +94,19 @@ class DefaultExceptionTranslatorExecuteListenerTests { static Object[] exceptionTranslatesSqlExceptions() { return new Object[] { new Object[] { SQLDialect.DERBY, sqlException("42802") }, + new Object[] { SQLDialect.DERBY, new SQLSyntaxErrorException() }, new Object[] { SQLDialect.H2, sqlException(42000) }, + new Object[] { SQLDialect.H2, new SQLSyntaxErrorException() }, new Object[] { SQLDialect.HSQLDB, sqlException(-22) }, + new Object[] { SQLDialect.HSQLDB, new SQLSyntaxErrorException() }, new Object[] { SQLDialect.MARIADB, sqlException(1054) }, + new Object[] { SQLDialect.MARIADB, new SQLSyntaxErrorException() }, new Object[] { SQLDialect.MYSQL, sqlException(1054) }, + new Object[] { SQLDialect.MYSQL, new SQLSyntaxErrorException() }, new Object[] { SQLDialect.POSTGRES, sqlException("03000") }, - new Object[] { SQLDialect.SQLITE, sqlException("21000") } }; + new Object[] { SQLDialect.POSTGRES, new SQLSyntaxErrorException() }, + new Object[] { SQLDialect.SQLITE, sqlException("21000") }, + new Object[] { SQLDialect.SQLITE, new SQLSyntaxErrorException() } }; } private static SQLException sqlException(String sqlState) {