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.