Skip to content

v3.0.0

Compare
Choose a tag to compare
@tkaczmarzyk tkaczmarzyk released this 19 Jan 13:14
· 20 commits to master since this release

Changelog:

  • Migrated project to spring boot 3.0 and java 17
    • Spring boot 3.0 is based on Hibernate version 6.X because in this version of hibernate all query results are distinct by default. This shouldn't affect most projects, but please be extra careful if you've ever used a spec with the distinct=false attribute.
  • Added support for spring native-image.
    • Specification-arg-resolver can be used in GraalVM native images, but it requires several additional configuration steps. This is due to the fact that this library relies on Java reflection heavily. Please see README_native_image.md for the details
  • Modified Springdoc-openapi dependency to be compatible with spring boot 3.0
  • Refactored IsMember, IsNotMember specifications - they no longer use reflection explicitly.
  • changed default join type in @Join from INNER to LEFT. I.e. if you have been using @Join with default join type:
    @Join(path="addresses", alias="a")
    Then, if you want to keep INNER join behaviour, you need to make it explicit (otherwise it will be LEFT):
    @Join(path="addresses", alias="a", type=JoinType.INNER)
  • Changed join lazy evaluation:
    • Inner joins are now evaluated even if there is no filtering applied on the joined part due to a missing HTTP param (as inner join may narrow down query results)
    • For non-distinct queries, all joins are now evaluated eagerly (even if there is no filtering applied on the joined part). Reminder for Hibernate users: from Hibernate 6 onwards, all queries are distinct anyway
    • in all other situations, left and right joins are not evaluated unless there is filtering on the joined part (and the corresponding HTTP param is present)
  • Removed all deprecated items, including:
    • DateAfter, DateAfterInclusive, DateBefore, DateBeforeInclusive - use GreaterThan, GreaterThanOrEqual, LessThan or LessThanOrEqual
    • DateBetween - use Between
    • EqualEnum - use Equal
    • @Joins container annotation - use repeated @Join and @JoinFetch