Skip to content

Version 2.3.0

Compare
Choose a tag to compare
@evanchooly evanchooly released this 06 Dec 06:56
· 1449 commits to master since this release

Version 2.3.0 (2022-12-06)

Notes

This release is long overdue and thus a bit of a large one. This release does have a breaking change around a package rename. Please see the migration guide for details and mitigation options. This release is also notable in that it's the last planned release in the 2.x line apart from bug/patch releases. This plan is subject to change but the current plan is to focus on 3.0 which will see the clean up of all the deprecated API elements among other larger plans.

Downloads

Binaries can be found on maven central.

Documentation

Full documentation can be found at https://morphia.dev/morphia/2.3. Javadoc can be found at https://morphia.dev/morphia/2.3/javadoc.

142 Issues Resolved

BREAKING

  • #1654: Move to driver 4.3.x
  • #1859: Promote the aggregation API out of experimental
  • #1863: Promote transactional code out of experimental status
  • #1865: Promote the Query/Filter types out of experimental
  • #1866: Promote experimental annotations out of experimental

TASK

  • #1633: Add Java 16 as a test target
  • #2057: Steal quarkus's code formatting setup
  • #2059: Fix the test logging
  • #2075: Update the website

AGGREGATION

  • #1634: Updates with aggregation pipeline
  • #1709: Regression when Querying by reference in $match stages
  • #1738: Implement $setWindowFields
  • #1739: Implement $covariancePop
  • #1740: Implement $covarianceSamp
  • #1741: Implement $dateAdd
  • #1742: Implement $dateDiff
  • #1743: Implement $dateSubtract
  • #1744: Implement $dateTrunc
  • #1745: Implement $denseRank
  • #1746: Implement $derivative
  • #1747: Implement $documentNumber
  • #1748: Implement $expMovingAvg
  • #1749: Implement $getField
  • #1751: Implement $integral
  • #1752: Implement $rank
  • #1753: Implement $setField
  • #1754: Implement $shift
  • #1770: Implement $unsetField
  • #1771: Add new Aggreggation#set(Set) method
  • #1807: Add the optional database name to $out
  • #1956: Implement $densify
  • #1957: Implement $documents
  • #1958: Implement $fill
  • #1960: Implement $bottom
  • #1961: Implement $bottomN
  • #1962: Implement $firstN
  • #1963: Implement $lastN
  • #1964: Implement $linearFill
  • #1965: Implement $locf
  • #1966: Implement $maxN
  • #1967: Implement $minN
  • #1968: Implement $sortArray
  • #1969: Implement $top
  • #1970: Implement $topN
  • #1971: Implement $tsIncrement
  • #1972: Implement $tsSecond
  • #1993: Implement $changeStream
  • #2121: Add alternate collection support to AggregationOptions

BACKPORT

  • #2146: $pull and $unset use the unmapped values
  • #2147: Forward port #2140

BUG

  • #1631: Forward port #1630
  • #1644: Forward Port #1643 : Lazy loading breaks when the ID field is located in a super-class
  • #1649: Forward Port: Regression when querying by reference in 2.2
  • #1650: Forward Port: It seems Date types and lifecycles do not play along well
  • #1659: Forward Port: Exception on Datastore.insert with versioned objects
  • #1709: Regression when Querying by reference in $match stages
  • #1720: Lazy intialization in EntityModel.getLifecycleMethods can create ConcurrentModificationExceptions
  • #1816: Forward port #1810: Cache generated proxy classes
  • #1841: Multiple similar filters can lose the existing filter
  • #1869: Codec set on MongoClient is overridden by DataStoreImpl
  • #1877: Forward port #1868
  • #1880: Forward port #1839
  • #1932: setOnInsert() doesn't deduce @Property annotations
  • #2012: ReferenceException when trying to persist a reference list with duplicated entries
  • #2085: setOnInsert() does not honor @reference annotations
  • #2114: Field shadowing breaks mapping
  • #2146: $pull and $unset use the unmapped values
  • #2147: Forward port #2140

DOCS

  • #1995: Document the sharding support
  • #2075: Update the website
  • #2152: Document upgrade process

ENHANCEMENT

  • #1421: Support insert() and replace() operations in addition to save()
  • #1615: Explore mixins for mapping external types
  • #1634: Updates with aggregation pipeline
  • #1638: @collation can infer locale from system default
  • #1640: Enhance creators to be smarter about constructor discovery
  • #1654: Move to driver 4.3.x
  • #1655: Resuscitate the validation extension
  • #1656: Move getLoggedQuery() to Query
  • #1738: Implement $setWindowFields
  • #1739: Implement $covariancePop
  • #1740: Implement $covarianceSamp
  • #1741: Implement $dateAdd
  • #1742: Implement $dateDiff
  • #1743: Implement $dateSubtract
  • #1744: Implement $dateTrunc
  • #1745: Implement $denseRank
  • #1746: Implement $derivative
  • #1747: Implement $documentNumber
  • #1748: Implement $expMovingAvg
  • #1749: Implement $getField
  • #1751: Implement $integral
  • #1752: Implement $rank
  • #1753: Implement $setField
  • #1754: Implement $shift
  • #1770: Implement $unsetField
  • #1771: Add new Aggreggation#set(Set) method
  • #1776: Enable specifying an alternate collection to the mapped collection
  • #1778: Simplify Query#update() and #modify() methods
  • #1807: Add the optional database name to $out
  • #1816: Forward port #1810: Cache generated proxy classes
  • #1823: Native query with morphia 2.x?
  • #1842: Add an option to MapperOptionsBuilder to configure user-defined CodecProviders
  • #1859: Promote the aggregation API out of experimental
  • #1863: Promote transactional code out of experimental status
  • #1864: Deprecate the MorphiaReference types
  • #1865: Promote the Query/Filter types out of experimental
  • #1866: Promote experimental annotations out of experimental
  • #1908: Remove UnsafeAllocator
  • #1911: Deprecate (local) getters from Options classes
  • #1938: Shard keys support
  • #1956: Implement $densify
  • #1957: Implement $documents
  • #1958: Implement $fill
  • #1960: Implement $bottom
  • #1961: Implement $bottomN
  • #1962: Implement $firstN
  • #1963: Implement $lastN
  • #1964: Implement $linearFill
  • #1965: Implement $locf
  • #1966: Implement $maxN
  • #1967: Implement $minN
  • #1968: Implement $sortArray
  • #1969: Implement $top
  • #1970: Implement $topN
  • #1971: Implement $tsIncrement
  • #1972: Implement $tsSecond
  • #1975: Remove SessionConfigurable
  • #1983: Deprecate Morphia.createDatastore() methods that do not take a MongoClient
  • #1984: Deprecate MapperOptions#getUuidRepresentation
  • #1993: Implement $changeStream
  • #1995: Document the sharding support
  • #2121: Add alternate collection support to AggregationOptions
  • #2134: Dynamic filter building
  • #2152: Document upgrade process
  • #2153: Deprecate LegacyQuery and its factory and configuration options

EXPERIMENTAL

  • #1938: Shard keys support

KOTLIN

  • #1640: Enhance creators to be smarter about constructor discovery

MIGRATION

  • #1778: Simplify Query#update() and #modify() methods
  • #2121: Add alternate collection support to AggregationOptions

QUESTION

  • #1727: Custom enum codec
  • #1823: Native query with morphia 2.x?

2 Pull Requests merged

  • #2126: Allow custom stages in aggregation pipeline
  • #1652: Decouple Datastores and Mappers