Skip to content
Advertisement

NoSuchMethodException in JDBI while using it with Lombok

I has immutable class like:

JavaScript

JDBI Developer Guide states that it should work with @Value annotations. At least with bindBean() or @BindBean.

But when I use org.jdbi.v3.core.result.ResultBearing#mapToBean method with MyEntry.class it throws java.lang.NoSuchMethodException: no such constructor: my.company.MyEntry.<init>()void/newInvokeSpecial. Looks like it trying create object with empty constructor and set fields after it. But I want to let my class be immutable. Any thoughts?

UPD:

lombok version: 1.18.20 jdbi version: 3.25.0 jdk: 15 and 16

Failed code:

JavaScript

Advertisement

Answer

JDBI documentation clearly states:

Use ConstructorMapper or @RegisterConstructorMapper to map @Value classes.

So your code might look like this (but probably there is no need to register row mapper on each call, it could be done on global level):

JavaScript
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement