📗 Links
⭐ New Features
- Add support for upsert via
MERGEandINSERT … ON CONFLICT#2273 - Support TypedPropertyPath for queries and update #2227
- Add support for TypedPropertyPaths #2226
- Do not throw
IncorrectUpdateSemanticsDataAccessExceptionon zero updated rows #2185 IncorrectUpdateSemanticsDataAccessExceptionwhen saving an unchanged entity #2176- Implement
INSERT or UPDATEvia upsers andMERGE#493 - Add
@Transientproperties toPersistentEntityand use value defaulting for transient constructor properties #2985
🐞 Bug Fixes
- Publish AfterConvertEvent only once per entity when using JdbcAggregateTemplate#stream #2302
- Fix DTO projection for AOT string based queries #2295
- AoT-generated DTO-projecting
@Querymethod return always uses entity class forRowMapper#2283 - JdbcAggregateTemplate.streamAll(Class<T>) fires AfterConvertEvent/AfterConvertCallback twice per entity #2282
- Consider type resolution and columns for composite identifier aggregate references #2260
- Consider convertible argument types in in JDBC query derivation #2249
- Consider converted identifiers for batch identifier queries #2240
- AOT query metadata does not match actual query #2239
- Duplicated order by column in SQL when using Pageable or Sort in repository query method #2228
- Kotlin value class as primary key causes exception when used with
findAllmethods in Spring Data JDBC 4 #2225 - Fix embedded path ColumnInfo access for composite IDs #2223
MappingRelationalConverterfails withIllegalStateExceptionwhen read conversion returnsnull#2217- Removed is new check from id generation by sequence #2200
- Id generation by Sequence does not work for entity with version property #2199
- Consider JDBCType in String-based repository queries #2193
SimpleR2dbcRepositoryrenders invalidQueryforfindByIdusing composite identifier #2191StatementFactoryappendsSortto count and exists queries #2190- Make Escaper to escape the escape character itself #2189
MappingJdbcConverter.readAndResolve(…)fails withIllegalArgumentExceptionreading entities with composite Id #2188JDBCTypeno longer considered byStringBasedJdbcQuery#2187- Escaper does not escape the escapeCharacter itself #2182
- Invalid SQL generated if an entity contains composite key reference #2113
- Query derivation not working for simple domain primitive with Reading/WritingConverter #2059
📔 Documentation
- Fix quoting by default in the mapping documentation #2296
- Mentioning the support of 'IgnoreCase' for String #2274
- Fix a/an in Javadoc #2216
- Fix typos #2213
- Correct MappingRelationalConverter javadoc #2207
- Polish javadoc #2206
- Javadoc says method may return null, but code does not allow it #2205
- BeforeDeleteEvent isn't getting triggered #2195
🔨 Dependency Upgrades
- Upgrade to Maven Wrapper 3.9.16 #2306
- Upgrade to Oracle JDBC Driver 23.26.2.0.0 #2301
- Upgrade to netty 4.2.13.Final #2298
- Upgrade to Postgres JDBC Driver 42.7.11 #2294
- Upgrade MySql R2DBC driver to 1.4.2 #2293
- Upgrade to MariaDB JDBC Driver 3.5.8 #2281
- Upgrade to MySql JDBC Driver 9.6.0 #2272
- Upgrade to Microsoft SqlServer JDBC Driver 13.4.0.jre11 #2271
- Upgrade to DB2 JDBC Driver 12.1.4.0 #2263
- Upgrade to Postgres JDBC Driver 42.7.10 #2256
- Upgrade to Microsoft SqlServer JDBC Driver 13.3.2.jre8-preview #2255
- Upgrade to Oracle JDBC Driver 23.26.1.0.0 #2238
- Upgrade to Postgres JDBC Driver 42.7.9 #2237
- Upgrade to Microsoft SqlServer JDBC Driver 13.3.1.jre11-preview #2236
- Upgrade to MariaDB JDBC Driver 3.5.7 #2235
- Upgrade to R2DBC MSSQL 1.0.4 #2220
- Upgrade to MariaDB 3.5.6 and DB2 12.1.3.0 drivers #2194
❤️ Contributors
We'd like to thank all the contributors who worked on this release!