After updating to Spring Boot 3.0.0 and Jooq to 3.17.6 our Application keeps crashing when fetching data from the MySQL-DB. As the Stacktrace belongs to a Spring Boot Class I am opening this bug report here.
Java 17 MySQL 8
022-12-26T20:58:48.774+01:00 ERROR 22584 --- [nio-8090-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.AbstractMethodError: Receiver class org.springframework.boot.autoconfigure.jooq.JooqExceptionTranslator does not define or inherit an implementation of the resolved method 'abstract void end(org.jooq.ExecuteContext)' of interface org.jooq.ExecuteListener.] with root cause
java.lang.AbstractMethodError: Receiver class org.springframework.boot.autoconfigure.jooq.JooqExceptionTranslator does not define or inherit an implementation of the resolved method 'abstract void end(org.jooq.ExecuteContext)' of interface org.jooq.ExecuteListener.
at org.jooq.impl.ExecuteListeners.end(ExecuteListeners.java:270) ~[jooq-3.17.6.jar:na]
at org.jooq.impl.Tools.safeClose(Tools.java:3152) ~[jooq-3.17.6.jar:na]
at org.jooq.impl.Tools.safeClose(Tools.java:3115) ~[jooq-3.17.6.jar:na]
Comment From: stuzfuz
Sample code where the issue occurs.
It happens on the fetch() statement!
return ctx
.select()
.from(COUNTRY)
.orderBy(COUNTRY.PICTURE)
.fetch()
.stream()
.map(this::toCountryEntity)
.collect(Collectors.toList());
Comment From: stuzfuz
plugins {
id "java"
id("org.springframework.boot") version "3.0.0"
id("io.spring.dependency-management") version "1.1.0"
id("nu.studer.jooq") version "7.1.1"
id("com.moowork.node") version "1.2.0"
id("com.google.cloud.tools.jib") version "1.8.0"
id("org.sonarqube") version "2.7"
id("org.flywaydb.flyway") version "9.8.1"
}
and
dependencies {
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("org.springframework.boot:spring-boot-starter-jooq")
implementation("org.springframework.boot:spring-boot-starter-mail")
implementation('org.springframework.boot:spring-boot-autoconfigure')
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.security:spring-security-oauth2-resource-server")
implementation("org.springframework.security:spring-security-oauth2-jose")
implementation("org.springframework.security:spring-security-config")
implementation('org.springframework:spring-context-support')
}
Comment From: philwebb
This is quite confusing as Spring Boot 3.0 compiles against Jooq 3.17.6 and the method in question is defined as a default method in org.jooq.ExecuteListener so we shouldn't need to implement it.
@stuzfuz are you able to provide a sample application that we can run (a GitHub project or zip file) that demonstrates the issue?
Comment From: stuzfuz
@philwebb thanks for your reply. I've fixed it already and it was pretty strange - I had to remove (and later upgrade) the plugin "nu.studr.jooq"
Comment From: young0264
same issue.. 😢 I fixed : jooq version 15 -> 18(new), spring boot 3.0.6 -> 3.1.1. And I didn't recognized to click generateJooq(gradle side bar).. I hope it is helpful for someone.