Update jdbi3Version to v3.55.0 - #3048
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
❌ Deploy Preview for peppy-sprite-186812 failed.
|
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 22, 2025 23:05
b252e48 to
35c77dd
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 27, 2025 22:55
35c77dd to
cdde2ba
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
May 1, 2025 22:34
cdde2ba to
1156445
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
May 17, 2025 01:47
1156445 to
c962306
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
June 13, 2025 19:46
c962306 to
f408505
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
October 2, 2025 22:15
f408505 to
4bd8cf0
Compare
❌ Deploy Preview for peppy-sprite-186812 failed.
|
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
November 5, 2025 13:12
4bd8cf0 to
1a7876d
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
December 10, 2025 02:54
1a7876d to
0e805aa
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
3 times, most recently
from
March 17, 2026 00:14
a741287 to
b503b2f
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
March 21, 2026 21:02
b503b2f to
54e7e39
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 6, 2026 23:43
54e7e39 to
d2210c0
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 9, 2026 19:14
d2210c0 to
6d1c36d
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 12, 2026 18:45
6d1c36d to
530a98d
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
April 28, 2026 05:05
530a98d to
16a30b5
Compare
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
July 1, 2026 23:09
16a30b5 to
79d64bf
Compare
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
renovate
Bot
force-pushed
the
renovate/jdbi3version
branch
from
September 27, 2026 05:32
79d64bf to
041bcf3
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
3.40.0→3.55.03.40.0→3.55.03.40.0→3.55.03.40.0→3.55.03.40.0→3.55.03.40.0→3.55.0Release Notes
jdbi/jdbi (org.jdbi:jdbi3-testcontainers)
v3.55.0constructor or
@JdbiConstructorfactory method, or a package-private Immutables value type.mapToBeannowalso uses a non-public no-arg constructor, e.g. a private one on a public bean. The
ReflectionMappersaccessible object strategy controls this. Unlike
FieldMapper, these mappers apply the strategy in effect whena type is first used and cache the result for the
Jdbiinstance, so set the strategy on theJdbibeforefirst use, not on a
Handleor statement. AConstructorMapperfor a type that Jdbi can not access now failson first use, with a message that names the fix, instead of at creation (#1684)
KotlinMapperignoring a SQLNULLfor a@PropagateNullconstructor parameter or property of anon-null primitive type such as
LongorInt. The column mapper returned0(orfalse) and theobject was mapped instead of
null.KotlinMappernow treats theNULLasnulllike theConstructorMapper,FieldMapper, andBeanMapperdo (#3048)@Nested Optional<T>attribute that heldnullinstead ofOptional.empty()whenTused theclass-level
@PropagateNull("column")form and that column was null. A@PropagateNullon theOptionalattribute itself no longer turns the parent intonullin this case, which matches theattribute-level form (#3049)
JoinRowReducer(Beta) reduces the rows of a join query into root objects and links the joinedobjects to them, for to-one and to-many relations over inner and outer joins. Columns are named relative
to the relation prefix, one type is one table, so a table row is one instance no matter through how many
relations the query reaches it, and reducers nest for deeper graphs (#1574)
RowView.getColumn(String)andRowView.getColumn(int)return a column value as the JDBC driverreturns it from
ResultSet.getObject, without a column mapper. NewRowView.getColumnNames()returnsthe column labels of the result set, and
RowView.getRow(RowMapper)maps the current row with a givenmapper (#1574)
BindListStyleto renderbindList/@BindListelements as single-column rows,(:a),(:b), foruse with the SQL
VALUESlist constructor. Configure it withSqlStatements#setBindListStyleor@BindList(style = BindListStyle.ROWS)(#1550, Alpha)LocalTransactionHandler.managed(): Jdbi manages transactions on connections with autocommitdisabled instead of joining them, e.g. on a pool that disables autocommit as a precaution.
inTransactioncommits, retry handlers such asSerializableTransactionRunnerengage, and astatement executed outside of a transaction is not committed. (#2663, #1733)
NoOpTransactionHandlerfor connections whose transactions an external framework manages,e.g. a Spring
TransactionAwareDataSourceProxyor an XA data source. It never reads or changesthe transaction state of the connection.
CMTTransactionHandlernow extends it, with unchangedbehavior. (#2742, thanks @bekoenig for the suggestion!)
transaction that the connection owner manages. New "Transactions managed outside Jdbi" section in
the User Guide, with tests that pin the contract. (#1039, #2663)
@PropagateNullresolves its column: on a class, the column name is relative to the mapperprefix (from
@Nestedor from a mapper made with a prefix), so one class maps under different prefixes.New "Using
@PropagateNull" section in the User Guide, with tests for mappers made with a prefix. (#1764)JdbiExtensionlosing its plugins and initializer afterafterAll, so a static extension whose testclass ran a second time in the same JVM (a Surefire rerun of a failed test, or a
@Nestedclass selectedas its own test class) restarted with a bare
Jdbiand failed withNoSuchMapperExceptionorNoSuchExtensionException(#3036)@RegisterKotlinMapperannotations on one method or type. Kotlin wrapped them in a generatedcontainer that Jdbi did not process, so none of the mappers were registered and rows mapped through the
unprefixed
KotlinMapperFactorymapper, ignoring the prefix. The annotation now usesRegisterKotlinMappersas its container. Recompile code that repeats the annotation to pick up the fix.(#2961)
ConfigRegistry.createCopy()now materializes each config object lazily on its first access insteadof copying every config object eagerly. This removes most of the allocation cost of extension attach
(
Jdbi#onDemandre-attaches on every call), ofHandlecreation, and of statement creation(#2982, thanks @ulmetrs!). If code depends on the exact moment a copy is taken, restore the old
timing with
ConfigRegistry#setEagerCopies(true)(Alpha).BeanMapper,ConstructorMapper,FieldMapper) that match no columns at all nowlist the result set columns in the error, and a prefixed mapper explains that
SELECT t.*yields unprefixedlabels and shows how to alias them. Document the same in the mapper and JoinRowMapper sections (#2289)
applications at startup with
NoClassDefFoundError: org.apache.commons.logging.LogFactory(#2990)java.timeout of the box:LocalDate,LocalTime,LocalDateTime,OffsetDateTime,OffsetTime,Instant, andZonedDateTimenow bind toSQL arrays without a manual
registerArrayTypecall.PostgresPluginadditionally registersDurationandPeriod(bound asinterval) and binds the date-bearing types as textliterals that cover the full Postgres date range, including BC dates (#3022)
afterRollbackcallbacks not firing when a transaction fails at commit time, e.g. on aserialization failure under
SerializableTransactionRunner. The failed transaction's callbacksalso no longer leak into the next transaction on the same handle. (#3021, thanks @OswaldOniSango!)
afterCommitandafterRollbackcallbacks not firing, and leaking into the next transaction onthe same handle, when the connection fails during a rollback or during the autocommit restore that
follows a commit.
RollbackOnlyTransactionHandlernow runs theafterRollbackcallbacks on acommit, and never the
afterCommitcallbacks, because it never commits (#3038)generator now registers a
GeneratedSqlObjectProvider(Alpha) for each generated class through theServiceLoader, and Jdbi uses it instead of a reflective lookup by class name. Classes generated by anolder Jdbi version must be recompiled.
ExtensionMetadata.Builder#setExtensionTypeMethodslets an extension factory supply the extension methods instead of discovering them by reflection. (#2474)
QualifiedTypeno longer synthesizes an annotation proxy for a qualifier annotation withoutmembers, so
QualifiedType.with(Class)and the built-in@Legacy,@NVarchar,@EnumByName,and
@EncodedJsonqualifiers work in a GraalVM native image without proxy registration.New
QualifiedType.hasQualifiers(Set)andhasNoQualifiers()compare qualifiers withoutmaterializing annotations. (#2967)
StringTemplateEnginenow caches template compilation through the core statementcache instead of recompiling on every render, with compiled templates pooled for thread safety.
The cached path bypasses
render(String, StatementContext): a subclass that overridesrendermust also override
parse, most simply to returnOptional.empty(), which keeps the core onits
renderpath.BatchandScriptnow render through the statement cache as well. (#2997)@GenerateSqlObjectimplementations not found when the SQL object interface is loaded by aclass loader other than the one that loaded Jdbi, e.g. plugin containers (#3014)
handle.attach()-only workloads no longerrecompute
ExtensionMetadataon every handle (#2991)JdbiImmutablesnot finding the generatedImmutable*andModifiable*classes when the specis loaded by a class loader other than the one that loaded Jdbi, e.g. plugin containers
v3.54.0@SqlPreflight(Alpha) for SQL Object methods. The annotation runs a literal SQL statement onthe same
Handle, immediately before the method's main statement, binding the method's arguments.This is useful for setting scoped/session variables before a query (e.g. a Postgres trigram
threshold). It is repeatable and may be placed on a method or a SQL Object type. See issue #2979.
v3.53.0Fixes: Jdbi-Freemarker Security Advisory GHSA-mggx-p7jf-jgw4
The Freemarker configuration allows templates to construct arbitrary
Java types, including
freemarker.template.utility.Execute.While exploiting this requires other unsafe practices (letting a user
dictate template input), it seems prudent to disable template class resolution.
Please see GHSA-mggx-p7jf-jgw4 for more details.
Upgrade to testcontainers 2.x
While this required no code changes, the testcontainers project has
renamed a number of their jar files. Jdbi still supports
testcontainers 1.x and now also testcontainers 2.x:
If you are using testcontainers with Jdbi today and can not update to
2.x, make sure that you reference the
org.testcontainers:jdbcandorg.testcontainers:junit-jupiterdependencies. Those used to beavailable as transitive dependency from
jdbi3-testcontainers.If you upgrade to testcontainers 2.x, the
org.testcontainers:testcontainers-jdbcandorg.testcontainers:testcontainers-junit-jupiterdependencies must beavailable.
v3.52.1java.time.Instantmapping from 3.52.0 (#2955, reported by @Eng-Fouad and @toadzky)java.time.OffsetTimejava.time.ZoneOffsetv3.52.0Changes to java.time related classes
JDBC 4.2 added full support to map java.time classes onto SQL types
in 2014. This release of Jdbi switches from mapping these objects onto
"classic" (
java.sql.Date,Time,Timestamp) to using the JDBC 4.2 API(
PreparedStatement#setObjectandResultSet#getObject).These changes should not be visible for any database, except if you
were brave enough to map types with time zones or offsets
(
ZonedDateTimeandOffsetDateTime) onto SQL types that have notimezone (
TIMESTAMPorDATETIME). This affects databases that donot support the
TIMESTAMP WITH TIMEZONEdata type. IAW MySQL.If you use MySQL with Jdbi and map any of these data types, you are
already losing the zone/offset information. Now you actually get an
error (which is the correct behavior of the driver!) unless you load
the new
MysqlPluginwhich restores the mapping.If your application relies on legacy mappings, you can also use the
new
@Legacyannotation to force the old behavior. See thedocumentation at https://jdbi.org/ for details.
@Legacyannotation to restore old timestamp mapping behavior@BindMethodsListwork with the String template engine (fixes #2917, reported by @agavrilov76, fixed by @JScodeconcise)v3.51.0Add new
jackson3artifact for Jackson 3 ( #2878 )Support configuring log level for SqlLogger (#2901, thanks @phinjensen! )
Update to SLF4J 2, to allow for configurable log levels in SqlLogger (#2902)
Deprecate for removal installPlugins plugin discovery. It's too easy to get yourself into trouble.
Support TYPE_USE
@Nullableannotations like JSpecify ( #2899, thanks @protocol7 ! )Allow
@GetGeneratedKeyson@SqlUpdatemethods to return multiple results as Lists or arrays (#2897, original PR by @aharin, thank you!)v3.50.0JDK Baseline Update
3.50.0 is the first release of Jdbi to require Java 17. Thank you Java 11 for your service!
We intend to do occasional bug patches for significant bugs or security issues but there
will be no further active development work.
Experimental Java Native support
3.50.0 is the first release to support using Jdbi directly in native compilation. We only
support using the Java 25+ GraalVM toolchain and fully expect that there are bugs, breakages
and things that are not working well. If you use Jdbi in a native environment and find any
problems, we would be thrilled to get bug reports!
v3.49.6We have some problems with our upstream parent POM. There are changes
to Maven Central that require us to roll the parent POM into the Jdbi
project. This is a temporary thing and will go away as soon as
uploading parent poms to Central has been reenabled.
v3.49.5v3.49.4v3.49.3v3.49.2longupdate count from update statements (#2778)v3.49.1v3.49.0v3.48.0v3.47.0@JdbiRepositoryso aot generation works (#2727, thanks @hpoettker !)springmodule that will focus on Spring Framework 6.x and beyond. This is currently the same code as spring5 but no longer needs to maintain Spring Framework 5.x backwards compatibility.v3.46.0v3.45.4v3.45.3v3.45.2v3.45.1v3.45.0JdbiTestContainersExtension#setShutdownWaitTime(int)to control waiting for extension shutdown if a database is very slow. Addresses #2629 (thanks @stoyants).v3.44.1@Definitionfeature also supports super-interface definitionsv3.44.0@Definitionto define computed constantsConnection#commit()threw an Exception, we called commit() again. Now thecode explicitly calls
Connection#rollback(). Fixes #2595<T extends This<T>>(#2582, reported by @johnarrr)v3.43.0** POTENTIAL BREAKING CHANGE **
With 3.43.0, we have improved the support for calling stored procedures via Call, and in particular
returning result sets.
Like any object that comes from a Statement, the expectation is that code will consume
all results (whether it's "normal" result set or a stored procedure result) before closing the Statement.
However, previously, Jdbi did not enforce this - OutParameters could be used after the statement closed.
So, you might observe new exceptions while trying to use OutParameters after closing the Call they came from.
See: #2592
Optionalor vavrOption(reported by @martyn0ff, #2558)fix SQL script parsing is (reported by @IrinaTerlizhenko, #2554).
integration-testmodule for tests that require different parts of the code base. Should be used to write test cases for issue investigations.nullas a value for binding bean, method, field and pojo objects (Suggested by @xak2000 in #2562)ResultSetfromCallstatements for databases that do not support cursor parameters. (suggested in #2557 by @metaforte and @0x1F528 in #2546)int,long,short,doubleandfloatreturn values from out parameters directly.v3.42.0@EnableJdbiRepositories, thanks @xfredk (#2528, #2544)v3.41.3-at the end of named parameters get swallowed. (#2499, thanks @gokristian for reporting).otjPostgressupport in jdbi-testing as the project shipped 1.02 with JPMS module name support.commons-compressdependabot issuev3.41.2otjPostgressupport in jdbi-testing. This will be undeprecated if they ship a version that provides an automatic module name for JPMS, otherwise it will be removed when Jdbi ships with full JPMS support.Handle#begin()beforeHandle#commit()(#2491, thanks @grigorem)v3.41.1.and-as part of named parameter names. (#2471)v3.41.0@Alpha(#2460)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.