mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-30 21:08:30 +08:00
107 lines
11 KiB
Markdown
107 lines
11 KiB
Markdown
# Changelog
|
|
|
|
### 5.0.0
|
|
|
|
This release of QueryDSL targets Java 8 minimally and comes with various improvements to make QueryDSL ready for the modern Java ecosystem.
|
|
This version also removes `joda-time:joda-time`, `com.google.guava:guava` and `com.google.code.findbugs:jsr305` as required runtime dependencies for using QueryDSL.
|
|
|
|
QueryDSL 5.0 is the long awaited major release after the QueryDSL project was left mostly unmaintained for over two years.
|
|
With this release the team worked hard on resolving the most pressing issues that have been requested repeatedly for a long time.
|
|
|
|
A huge thanks goes out to all contributors that made this release possible in their free time:
|
|
|
|
* **[@mp911de](https://github.com/mp911de)**, for working on the MongoDB Document API;
|
|
* **[@daniel-shuy](https://github.com/daniel-shuy)**, for working on decoupling `querydsl-sql` from `joda-time:joda-time`;
|
|
* **[@heesuk-ahn](https://github.com/heesuk-ahn)**, for working on improved Hibernate support and count query generation in `JPASQLQuery`;
|
|
* **[@harshtuna](https://github.com/harshtuna)**, for working on NullsLast ordering in `querydsl-collections`;
|
|
* **[@kherrala](https://github.com/kherrala)**, **[@ridoo](https://github.com/ridoo)** and **[@NikitaKochkurov](https://github.com/NikitaKochkurov)** for working on the JTS and GeoLatte upgrade for `querydsl-spatial`;
|
|
* **[@ridoo](https://github.com/ridoo)**, for working on Spatial support in `HibernateDomainExporter` and `JPADomainExporter`;
|
|
* **[@jwgmeligmeyling](https://github.com/jwgmeligmeyling)**, **[@Shredder121](https://github.com/Shredder121)**, **[@johnktims](https://github.com/johnktims)**, **[@idosal](https://github.com/idosal)** and **[@robertandrewbain](https://github.com/robertandrewbain)**.
|
|
|
|
#### New features
|
|
|
|
* [#2672](https://github.com/querydsl/querydsl/pull/2672) - Various performance and code improvements possible by targeting Java 8 source level.
|
|
* [#2672](https://github.com/querydsl/querydsl/pull/2672) - Added `Fetchable#stream()` which returns a `Stream<T>`.
|
|
Make sure that the returned stream is always closed to free up resources, for example using _try-with-resources_.
|
|
It does not suffice to rely on a terminating operation on the stream for this (i.e. `forEach`, `collect`).
|
|
* [#2324](https://github.com/querydsl/querydsl/issues/2324) - Removal of Guava as dependency.
|
|
Almost no required transitive dependencies to get started with QueryDSL.
|
|
And no more conflicts with Guava versions required by your other tools or own application.
|
|
* [#2025](https://github.com/querydsl/querydsl/issues/2025) - `joda-time:joda-time` is no longer a required dependency for `querydsl-sql`.
|
|
By default, the Java 8 date/time API is used for date/time operations.
|
|
The `joda-time:joda-time` types will still be registered automatically if they are on the classpath.
|
|
* [#2215](https://github.com/querydsl/querydsl/issues/2215) - MongoDB 4 support through the Document API
|
|
* [#2697](https://github.com/querydsl/querydsl/issues/2697) - Allow `com.querydsl.core.alias.Alias.*` to be used on a JRE by relying on ECJ as compiler
|
|
* [#2479](https://github.com/querydsl/querydsl/issues/2479) - Swap out JSR305 for Jetbrains Annotations.
|
|
Because the Jetbrains Annotations, contrary to the JSR305 annotations, use a Class retention level, Jetbrains Annotations
|
|
does not have to be available at runtime and is not a transitive dependency.
|
|
* [#658](https://github.com/querydsl/querydsl/issues/658) - Added `JPAExpressions#treat` which can be used to generate JPA 2.1 Treated path expressions.
|
|
* [#2666](https://github.com/querydsl/querydsl/issues/2666) - More descriptive error message when using unsupported query features in JPA.
|
|
* [#2106](https://github.com/querydsl/querydsl/issues/2106) - Support NullsLast ordering in `querydsl-collections`.
|
|
* [#2404](https://github.com/querydsl/querydsl/issues/2404) - Upgrade of JTS / Geolatte in `querydsl-spatial`
|
|
* [#2320](https://github.com/querydsl/querydsl/issues/2320) - Make Spatial support available to `HibernateDomainExporter` and `JPADomainExporter`.
|
|
* [#2612](https://github.com/querydsl/querydsl/issues/2612) - Support jakarta.* packages for new Jakarta EE releases (available through the`jakarta` classifiers for Maven)
|
|
|
|
#### Bugfixes
|
|
|
|
* [#2579](https://github.com/querydsl/querydsl/issues/2579) - Count query generation in `JPASQLQuery`
|
|
* [#2671](https://github.com/querydsl/querydsl/issues/2671) - Fixed a concurrency issue in `Alias.*`. `Alias.*` is now Thread safe.
|
|
* [#2053](https://github.com/querydsl/querydsl/issues/2053) - Work around issues with `AbstractJPAQuery#fetchResults` and `AbstractJPAQuery#fetchCount` in a query with a having clause by using an in-memory calculation.
|
|
* [#2504](https://github.com/querydsl/querydsl/issues/2504) - Work around issues with `AbstractJPAQuery#fetchResults` and `AbstractJPAQuery#fetchCount` in a query with multiple group by expressions by using an in-memory calculation.
|
|
* [#2663](https://github.com/querydsl/querydsl/issues/2663) - Fix issues with the JPA implementation of `InsertClause`.
|
|
* [#2706](https://github.com/querydsl/querydsl/pull/2706) - Fix a memory leak in `TemplateFactory`.
|
|
* [#2467](https://github.com/querydsl/querydsl/issues/2467) - Prevent `ExtendedBeanSerializer` from generating `toString` method twice
|
|
|
|
#### Breaking changes
|
|
|
|
* Java 8 minimal requirement. If you still rely on Java <7, please use the latest 4.x.x version.
|
|
* `JavaSE6SQLExceptionWrapper` and other parts regarding pre-Java 7 exception handling are removed.
|
|
* Removed bridge method that were in place for backwards compatibility of legacy API's. This may lead to some breaking API changes.
|
|
* Removed Guava as a dependency. If your application relies on Guava, make sure to add it as a direct dependency for your project and not rely on QueryDSL shipping it transitively.
|
|
* In order for Guava to be removed Mysema Codegen had to be rereleased as QueryDSL Codegen Utils.
|
|
Therefore, the classes in this module moved to a different package: `com.mysema.codegen` is now `com.querydsl.codegen.utils`.
|
|
This for example affects `com.mysema.codegen.model.SimpleType`.
|
|
Although many applications won't touch the codgen internal classes, custom APT extensions might be affected by this.
|
|
* Due to the removal of Guava, any method that received an `ImmutableList` as parameter, now accepts any `List` instead.
|
|
Normal code should handle this signature just fine.
|
|
However, make sure to check any reflective uses of these parameters.
|
|
* The `querydsl.variableNameFunctionClass` property for the `DefaultConfiguration` should now be provided as a `java.util.function.Function` instead of a `com.google.common.base.Function`.
|
|
* `CodeWriter#beginStaticMethod` now takes a `java.util.function.Function` instead of a `com.google.common.base.Function`.
|
|
* `AbstractLuceneQuery` now takes a `java.util.function.Function` instead of a `com.google.common.base.Function`.
|
|
* `AbstractMongodbQuery` now takes a `java.util.function.Function` instead of a `com.google.common.base.Function`.
|
|
* `com.querydsl.codegen.NamingFunction`, `EvaluatorFunction`, `DefaultVariableFunction` now extend `java.util.function.Function` instead of `com.google.common.base.Function`.
|
|
* Any constructor that received a `javax.inject.Provider`, now takes a `java.util.function.Supplier` instead. In most cases you can replace the argument with `provider::get`.
|
|
* This release targets Hibernate 5 in the Hibernate integration. If you need Hibernate 4 dialect specific workarounds, use the `HQLTemplates` instead of the `Hibernate5Templates`.
|
|
* Removal of various deprecated methods.
|
|
* `joda-time:joda-time` is now an optional dependency. If your application relies on `joda-time:joda-time` make sure to specify it as a direct dependency rather than relying on QueryDSL to include it transitively.
|
|
* `com.google.code.findbugs:jsr305` is no longer a dependency. If your application currently relies on QueryDSL shipping JSR305 transitively, you should add JSR305 as a direct dependency to your project.
|
|
* MDC keys now use an underscore instead of a dot as separator: ` querydsl.query` now is `querydsl_query` and `querydsl.parameters` is `querydsl_parameters`.
|
|
* Removal of `PolyHedralSurface` in `querydsl-spatial` and `querydsl-sql-spatial` due to the upgrade of `geolatte-geom`.
|
|
* `com.querydsl.apt.Extension` moved to `com.querydsl.codegen` and now resides in the `querydsl-codegen` module.
|
|
* `com.querydsl.apt.SpatialSupport` moved to `com.querydsl.spatial.apt.SpatialSupport` and now resides in the `querydsl-spatial` module.
|
|
* `com.querydsl.sql.codegen.SpatialSupport` moved to `com.querydsl.sql.spatial.SpatialSupport` and now resides in the `querydsl-sql-spatial` module.
|
|
* `SQLServerGeometryReader` in `querydsl-sql-spatial` is removed in favour of `org.geolatte.geom.codec.db.sqlserver.*`.
|
|
* `PGgeometryConverter` in `querydsl-sql-spatial` is removed in favour of `org.geolatte.geom.codec.Wkt`.
|
|
* `JGeometryConverter` in `querydsl-sql-spatial` is removed in favour of `org.geolatte.geom.codec.db.oracle.*`.
|
|
* Removal of `HibernateDomainExporter` in `querysql-jpa-codegen`. `HibernateDomainExporter` only supported Hibernate 4, which QueryDSL no longer actively supports. Instead, use the `JPADomainExporter` with Hibernate.
|
|
|
|
#### Deprecations
|
|
* `AbstractJPAQuery#fetchResults` and `AbstractJPAQuery#fetchCount` are now deprecated for queries that have multiple group by
|
|
expressions or a having clause, because these scenarios cannot be supported by pure JPA and are instead computed in-memory.
|
|
If the total count of results is not necessary, we recommend to always use `AbstractJPAQuery#fetch` instead.
|
|
If you want a reliable way of computing the result count for a paginated result for even the most complicated queries,
|
|
we recommend using the [Blaze-Persistence QueryDSL integration](https://persistence.blazebit.com/documentation/1.5/core/manual/en_US/#querydsl-integration).
|
|
`BlazeJPAQuery` properly implements both `fetchResults` and `fetchCount` and even comes with a `page` method.
|
|
|
|
#### Dependency updates
|
|
|
|
* `cglib:cglib` to 3.3.0 for Java 8+ support
|
|
* `org.eclipse.jdt.core.compiler:ecj` to 4.6.1 for Java 8+ support
|
|
* `joda-time:joda-time` to 2.10.8 for better interoperability with other frameworks that use more recent versions than QueryDSL.
|
|
* `org.geolatte:geolatte-geom` to 1.4.0 for better interopability with Hibernate Spatial.
|
|
`querydsl-spatial` is still backwards compatible with older versions of Geolatte, however, `querydsl-sql-spatial` is not and requires 1.4.0 or newer.
|
|
* `com.vividsolutions:jts` to `org.locationtech:jts` for better interopability with Hibernate Spatial.
|
|
`com.vividsolutions:jts` is still supported for `querydsl-spatial` if an older version of `org.geolatte:geolatte-geom` is provided.
|
|
* DataNucleus 5.2.x for Java 8+ support
|
|
* JDO now uses `org.datanucleus:javax.jdo` instead of `javax.jdo:jdo-api`
|