The 6.0 release of AccessPlatform is in the planning/development phase.
Version 6.0 is currently planned to include the following over 5.2
Require minimum Java version 11
Support Jakarta Persistence API, v3.0 and v3.1
Support Cassandra v4
6.0.9 2024?
26 August 2024 : Version 6.0.8 includes the following changes
datanucleus-api-jdo-129 - Improved nested exception handling
datanucleus-rdbms-490 - JDOQLQuery should throw exception if datastore does not support query canceling
datanucleus-core-512 - Better extendability of L2CacheRetrieveFieldManager and ManagedConnection.
datanucleus-core-514 - Fixed error message
datanucleus-api-jdo-132 - Missing extensions in IndexMetaData when multiple indices are defined at class-level via @Index annotation
datanucleus-rdbms-488 - Bugfixed support for nullable primary-keys. Now also works when PK isn’t first fields in Persistable Class.
datanucleus-rdbms-491 - SQLStatement#getSQLText implementations are not thread-safe
datanucleus-rdbms-492 - Introduce locking for SQLStatement#getSQLText
datanucleus-rdbms-496 - [MYSQL] Column name mismatch when checking for primary key specifications
3 February 2024 : Version 6.0.7 includes the following changes
datanucleus-core-502 - Replace hard-coded property String with PropertyNames constants
datanucleus-core-503 - Replace hardcode string with PropertyNames constant
datanucleus-core-504 - Better extendability.
datanucleus-core-505 - Added extension-point for LockManager. Added option for specifying max value for version-number when using version-number strategy with optimistic locking.
datanucleus-core-506 - Added new L2 Cache update mode: datastore-read-only. With this mode L2 cache is only updated on datastre-read and NOT at commit. A custom commit listener can be made to control L2 cache population during commit if required.
datanucleus-core-507 - Added options for better controlling the flush process.
datanucleus-core-508 -Improvements to ExecutionContext.findObject and Level 1 cache handling.
datanucleus-core-509 - Added option for having custom cache implementation for ExecutionContextImpl.enlistedSMCache. Also added performance accessor for value-set of this cache.
datanucleus-api-jdo-128 - Improved optimistic-lock exception handling on commit.
datanucleus-rdbms-485 - Enabled nullable application identity fields for RDBMS engine (not for schema generation) to allow for mapping on to legacy schemas without primary key
datanucleus-rdbms-486 - Added option for supplying custom FlushProcess. Also improved support for SQL batching inserts/updates/deletes combined with optimistic lock handling.
datanucleus-rdbms-487 - Added RDBMS extension for member to specify that updates to member should not trigger version update when using optimistic locking.
datanucleus-core-500 - Bulk fetch of empty collections can cause ClassCastException when calling setter with a different collection implementation
1 November 2023 : Version 6.0.6 includes the following changes
datanucleus-core-495 - Upgrade ASM to v9.5
datanucleus-core-496 - Performance optimization
datanucleus-core-497 - Making it easier to extend StateManagerImpl
datanucleus-core-498 - Get URL to the manifest file if plugin URL starts with 'bundle'
datanucleus-core-499 - Upgrade ASM to v9.6
datanucleus-rdbms-477 - Added option to allow implementing custom discriminator with DiscriminatorDefiner metadata option
datanucleus-rdbms-478 - PostgreSQLAdapter : change default IsolationForSchemaCreation to READ_COMMITTED
datanucleus-rdbms-481 - Making it easier to extend JoinSetStore in custom code.
datanucleus-rdbms-483 - Provide registerMbeans HikariCP options
datanucleus-rdbms-479 - Issue #470 doesn’t allow for discriminatorColumnName not being in different case
datanucleus-rdbms-480 - Fixes for querying M-1 UNI directional with join table mappings (and setting them)
13 August 2023 : Version 6.0.5 includes the following changes
datanucleus-core-488 - Enabled using java logger - even if Log4j is present
datanucleus-rdbms-468 - Support ConnectionInitSQL with HikariCP
datanucleus-rdbms-471 - Enabled builtin DBCP connection pool to act on auto-commit and max-lifetime
datanucleus-core-485 - TypeConversion for boolean not working with Oracle
datanucleus-core-490 - Fixed having single field of abstract type using recursion depth 0
datanucleus-rdbms-470 - Fixed problem in handling of DB column mapped into multiple fields
datanucleus-rdbms-475 - Fixed SQL query leak resulting in OutOfMemory
datanucleus-rdbms-476 - Fixed having single field of abstract type using recursion depth 0
5 April 2023 : Version 6.0.4 includes the following changes
datanucleus-rdbms-462 - Support bulk-fetch on a Collection when field is empty
datanucleus-rdbms-463 - Improved support for the SQL XML type.
datanucleus-core-484 - Fix warning log line in ColumnMetaData
datanucleus-rdbms-457 - ResultClassROF can fail to set fields/properties when JDBC driver returns unassignable type
datanucleus-rdbms-459 - datanucleus.query.jdoql.{varName}.join extension does not work when "varName" is not lower case
datanucleus-geospatial-17 - Fixed OSGi issues which prevents bundle from starting
datanucleus-jodatime-4 - Fixed OSGi issues which prevents bundle from starting
2 January 2023 : Version 6.0.3 includes the following changes
datanucleus-core-482 - Support Java 20
datanucleus-rdbms-456 - PostgreSQL: Use BIGSERIAL when identity column is mapped to BIGINT
datanucleus-rdbms-452 - NullPointerException in ResultClassROF.getObject() in 6.0.2
datanucleus-rdbms-454 - Missing argType cache in ResultClassROF
3 October 2022 : Version 6.0.2 includes the following changes
datanucleus-core-478 - Improve thread safety of statistics
datanucleus-rdbms-451 - Remove column mapping to JDBC type FLOAT for SQL Server
datanucleus-core-479 - Closing PersistenceManager can cause deadlocks when datanucleus.multithreaded=true
datanucleus-rdbms-447 - Fix illegal precision spec for MySQL TINYTEXT
datanucleus-rdbms-448 - Support TINYBLOB on MySQL/MariaDB without size specifier, as per TINYTEXT
datanucleus-rdbms-449 - Fix incomplete fix for #444
datanucleus-rdbms-450 - Search of setter function in ResultClassROF.getObject() is broken
25 August 2022 : Version 6.0.1 includes the following changes
datanucleus-jdo-query-19 - Support generics on Optional field in generated class
datanucleus-rdbms-444 - Regression with SQL Server caused by #408
25 June 2022 : Version 6.0.0.RELEASE includes the following changes
datanucleus-core-470 - Drop XMLAutoStarter, deprecated in 6.0.0.m5
datanucleus-core-473 - Refactor DNStateManager.unloadField to take in field number
datanucleus-core-475 - Rationalise enums for query language
datanucleus-core-474 - IllegalMonitorStateException being thrown during lock release when datanucleus.multithreaded=true
datanucleus-rdbms-443 - Handling of insert audit attributes (user, timestamp) is incorrect when specified on a field
07 May 2022 : Version 6.0.0.M5 includes the following changes
datanucleus-core-446 - Support Jakarta LOCAL_DATE, LOCAL_TIME, LOCAL_DATETIME
datanucleus-core-447 - Upgrade ASM to v9.3
datanucleus-core-448 - Support POWER, ROUND function evaluation for in-memory queries
datanucleus-core-449 - Support ATAN2 function evaluation for in-memory queries
datanucleus-core-450 - Support COT function evaluation for in-memory queries
datanucleus-core-451 - Support COSH, SINH, TANH function evaluation for in-memory queries
datanucleus-core-457 - Remove many toLowerCase in properties/extension handling for efficiency
datanucleus-core-458 - ClassUtils.newInstance has a constructor cache, but the benefit is dubious
datanucleus-core-460 - Move all SCO wrapper creation to SCOUtils
datanucleus-core-461 - Drop use of org.datanucleus.util.MultiMap, use Java standard classes for same benefit
datanucleus-core-462 - Change logging default to Log4J v2, and allow use of NullLogger
datanucleus-core-463 - Add property to permit updating all candidate fields on query result processing
datanucleus-core-464 - Add ability to treat java.util.Date (and java.sql.Date, Time, Timestamp) as non-mutable
datanucleus-core-467 - Support recursion-depth=0 on DFG fields
datanucleus-core-468 - Remove support for fetch-fk-only
datanucleus-core-469 - Deprecate XMLAutoStarter
datanucleus-api-jdo-123 - Support JDO XSD/DTD file at https://db.apache.org/jdo/xmlns/
datanucleus-api-jdo-126 - Add convenience method to return the fields of a class that are in the current FetchPlan
datanucleus-api-jakarta-9 - Support jakarta-315
datanucleus-api-jakarta-10 - Support ln, power, sign, round, floor, ceiling for jakarta-171, jakarta-351
datanucleus-api-jakarta-11 - Support localDate, localTime, localDateTime on CriteriaBuilder
datanucleus-rdbms-423 - Support Jakarta LOCAL_DATE, LOCAL_TIME, LOCAL_DATETIME
datanucleus-rdbms-424 - Support SIGN SQL function
datanucleus-rdbms-425 - Support ATAN2 SQL function
datanucleus-rdbms-426 - Support COT SQL function
datanucleus-rdbms-427 - Support COSH, SINH, TANH SQL functions
datanucleus-rdbms-430 - SQLite v3.30.0 adds support for ORDER BY … NULLS FIRST|LAST
datanucleus-rdbms-432 - Use of Calendar for timezone handling in result set interfacing is creating clones maybe unnecesarily
datanucleus-rdbms-434 - Support "PARTITIONED TABLE" table type from DatabaseMetadata
datanucleus-rdbms-436 - Support updating of all candidate fields when processing query results
datanucleus-rdbms-439 - Expand fetch-fk-only to only automatically apply if recursionDepth is not set from default.
datanucleus-rdbms-441 - Remove support for fetch-fk-only
datanucleus-core-453 - Don’t L2 cache a field that is a DN Collection instance
datanucleus-core-454 - Compound identity with embedded persistable creates StateManager that is not embedded
datanucleus-core-456 - Support QueryResultCache "none" setting
datanucleus-core-465 - FetchPlanForClass.getRecursionDepthForMember doesn’t take in to account dynamically defined groups
datanucleus-rdbms-431 - datanucleus.query.useFetchPlan is seemingly not working
datanucleus-rdbms-438 - Update PR #375 so that it gets the identifier name not the column name
15 March 2022 : Version 6.0.0.M4 includes the following changes
datanucleus-core-29 - Provide ability for store plugins to load references of related objects and cache them in the ExecutionContext (to save later fetch)
datanucleus-core-420 - Ignore persistence properties of form "datanucleus.schema.generateXXX" when using SchemaTool
datanucleus-core-430 - Move AutoStartMechanism helper code to org.datanucleus.store.autostart package
datanucleus-core-431 - Metadata : provide fast lookup of different type of member
datanucleus-core-432 - Move RDBMSStoreManager getCatalogName, getSchemaName to StoreManager
datanucleus-core-434 - Remove Lock object from StateManagerImpl
datanucleus-core-435 - EmbeddedMetaData : drop memberMetaData and just use members
datanucleus-core-436 - Drop datanucleus.jmxType of "default" (use "platform" instead)
datanucleus-core-437 - Offload StateManagerImpl savedPC, savedLoadedFields, savedPersistenceFlags into separate object
datanucleus-core-438 - Change StateManager for embedded cases to only allow one "owner"
datanucleus-core-439 - Offload StateManagerImpl "activity" into flags bits
datanucleus-core-440 - Load of 1-N BIDIR collection should store owner in StateManager of each element if owner field isn’t loaded by default.
datanucleus-core-441 - Backed SCO Collection wrappers can avoid datastore call on remove(element) if not in the cached collection
datanucleus-core-443 - L2 cache is not updated when stored field is instantiated or when not already present
datanucleus-core-444 - Avoid embedded objects being put in L1 cache
datanucleus-core-445 - Change embedded object handling to ignore lifecycle, since managed by owner object
datanucleus-rdbms-370 - Provide mechanism for 1-1 owned / N-1 FK relation to be marked to fetch the "PK" only and not instantiate (when not in FetchPlan)
datanucleus-rdbms-407 - Table lookups in DatabaseMetaData only use catalog/schema if user-defined but should take default for the database
datanucleus-rdbms-408 - Support H2 v2
datanucleus-rdbms-410 - Change "fetch-fk-only" member extension to equate to recursion-depth=0 feature
datanucleus-rdbms-411 - adds support for google cloud spanner
datanucleus-rdbms-412 - Change JavaTypeMapping getObject/setObject signature for embedded cases
datanucleus-rdbms-413 - Change List backing store code for indexed list to shift in bulk (single statement)
datanucleus-rdbms-416 - ListStore.removeAll() is inefficient for indexed list, should do single "nulling" of list indexes and minimal reorders
datanucleus-rdbms-417 - Fetch of relation at one side of 1-1 bi relation should store the id of the related object in the other side StateManager
datanucleus-rdbms-418 - Allow auto-fetch of (unselected) FK fields in fetch request
datanucleus-rdbms-420 - Provide fallback JDBC type=NUMERIC when MySQL doesnt provide for it
datanucleus-core-27 - Update of embedded when using pessimistic txns can result in problem in dirty field handling
datanucleus-rdbms-406 - Updated the default for the DatastoreId.class definition; it should be a BigInt by default, from 5.2
datanucleus-rdbms-409 - Specification of column name in <primary-key> block doesnt use identifier case in checks
8 November 2021 : Version 6.0.0.M3 includes the following changes
datanucleus-core-403 - Add retrieveObjects() method to allow for bulk retrieve when objects of same type
datanucleus-core-404 - Add StoreManager.isClosed method
datanucleus-core-407 - Change Multitenancy to be (explicit) class-specified, and not global-specified
datanucleus-core-408 - Mutitenancy tenant an tenant read ids Karnaugh table
datanucleus-core-409 - Add Multitenancy info as MultitenancyMetaData rather than just extensions
datanucleus-core-410 - Add SoftDelete info as SoftDeleteMetaData rather than just extensions
datanucleus-core-411 - Refactor IdentityMetaData to DatastoreIdentityMetaData
datanucleus-core-413 - Implement cascade-detach=false
datanucleus-core-414 - Change "cascade-update" to be "cascade-attach" since it represents JPA CascadeType.MERGE
datanucleus-core-417 - Drop deprecated "enum-getter-by-value", replaced by "enum-value-getter"
datanucleus-core-418 - Migrate "ObjectProvider" to "StateManager"
datanucleus-core-419 - Refactor org.datanucleus.store.types.XXXHandler/Adapter to org.datanucleus.store.types.container
datanucleus-api-jdo-119 - Use ExecutionContext.retrieveObjects() method to allow for future optimisation
datanucleus-api-jdo-120 - Extend @MultiTenant to permit allowNulls etc to be defined
datanucleus-api-jdo-121 - Extend @SoftDelete to permit allowNulls etc to be defined
datanucleus-api-jdo-122 - Refactor org.datanucleus.api.jdo.metadata.XXXMetadataImpl to org.datanucleus.api.jdo.metadata.api
datanucleus-rdbms-399 - Update Map store handling to make use new putAll() method, and to grab entrySet when current map unknown
datanucleus-rdbms-401 - Delete of owner of 1-1 uni FK relation (not dependent field) can load the related object but needn’t
datanucleus-rdbms-403 - Rename query extension "datanucleus.forUpdateNowait" to "datanucleus.query.forUpdateNowait"
datanucleus-rdbms-404 - Rename query extension "datanucleus.useIsNullWhenEqualsNullParameter" to "datanucleus.query.useIsNullWhenEqualsNullParameter"
datanucleus-mongodb-55 - Load of object doesnt check for tenantId when running multitenancy
datanucleus-mongodb-60 - Move to mongodb-driver-legacy v4.3.1
datanucleus-mongodb-61 - Add support for SoftDelete so that a delete just sets the flag rather than deleting
datanucleus-cassandra-38 - Support Cassandra v4
datanucleus-cassandra-40 - Support persistence of java.time types
datanucleus-cassandra-41 - Support SoftDelete lifecycle of operations
datanucleus-cassandra-42 - Support querying of multitenancy / softdelete candidate classes
datanucleus-excel-22 - Upgrade to POI v5.0.0
datanucleus-geospatial-15 - Change constructor arg for SpatialHelper to RDBMSStoreManager since only for RDBMS
datanucleus-core-401 - DateStringConverter fails on Java11
datanucleus-core-402 - CalendarStringConverter fails on Java11
datanucleus-core-405 - Mutation of SCO field before load of old value can result in incorrect datastore contents
datanucleus-core-416 - Fix IS EMPTY clause for JPQL queries
datanucleus-mongodb-59 - Load of object doesnt check for tenantId when running multitenancy
datanucleus-cassandra-39 - CassandraQueryResult behaves incorrectly wrt fetchSize
15 August 2021 : Version 6.0.0.M2 includes the following changes
datanucleus-core-370 - Support jpa-spec-297
datanucleus-core-386 - Rename YYYMetaDataHandler to YYYXmlHandler
datanucleus-core-387 - Refactor TransactionImpl, JTATransactionImpl, JTAJCATransactionImpl to org.datanucleus.transaction
datanucleus-core-388 - Drop ClassUtils.convertValue and use TypeConversionHelper.convertTo
datanucleus-core-389 - Add assorted additional conversions for java.time to TypeConversionHelper.convertTo
datanucleus-core-390 - Refactor TypeConversionHelper to org.datanucleus.store.types.converters
datanucleus-core-391 - Allow disabling L1 cache on PM/EM
datanucleus-core-392 - Refactor org.datanucleus.store.*Extent to org.datanucleus.store.query
datanucleus-core-394 - Drop Column extension "index". Was replaced by "position" many years ago
datanucleus-core-395 - NamingFactory : cater for table name specified as "catalog.schema.name"
datanucleus-core-400 - Add MapStore method for the case where we are doing a put() and know the old value (due to caching)
datanucleus-api-jdo-113 - Replace NucleusJDOHelper with DataNucleusHelperJDO
datanucleus-api-jdo-114 - Support core-386
datanucleus-api-jdo-115 - Support core-387
datanucleus-api-jdo-116 - Support annotations for InstanceCallback methods
datanucleus-api-jdo-117 - Support @Version on field/property in extension to JDO API
datanucleus-api-jpa-125 - Replace NucleusJPAHelper with DataNucleusHelperJPA
datanucleus-api-jpa-126 - Support core-386
datanucleus-api-jpa-127 - Support core-387
datanucleus-api-jpa-128 - Support DISTINCT aggregates in CriteriaBuilder (javax.persistence 2.2.4+)
datanucleus-api-jpa-130 - Drop JPQLHelper and use JPQLQueryHelper
datanucleus-api-jpa-131 - Support @Index.columnList potential use of ASC|DESC
datanucleus-api-jpa-132 - Support @MapKeyJoinColumns
datanucleus-api-jakarta-2 - Replace NucleusJakartaHelper with DataNucleusHelperJakarta
datanucleus-api-jakarta-3 - Support core-386
datanucleus-api-jakarta-4 - Support core-387
datanucleus-api-jakarta-5 - Support DISTINCT aggregates in CriteriaBuilder (jakarta.persistence 3.0.1+)
datanucleus-api-jakarta-7 - Support @Index.columnList potential use of ASC|DESC
datanucleus-api-jakarta-8 - Support @MapKeyJoinColumns
datanucleus-rdbms-365 - Move "insertPostProcessing" from MappingCallbacks to own interface, also for updates
datanucleus-rdbms-386 - Determination of how to set fields of ResultClass should be performed once only
datanucleus-rdbms-387 - Support creator expression with parameters having aliases
datanucleus-rdbms-388 - Move support for CREATE INDEX use of ASC|DESC on columns to DatastoreAdapter option
datanucleus-rdbms-389 - Change PrimaryKey to inherit direct from Key
datanucleus-rdbms-390 - Remove "properties" from DatastoreAdapter and use from StoreManager
datanucleus-rdbms-391 - Change datanucleus.rdbms.statementLogging default to JDBC
datanucleus-rdbms-394 - JoinMapStore internalPut and internalUpdate don’t use batching but should allow it
datanucleus-rdbms-396 - Move handling of embedded keys/values to JoinMapStore from AbstractMapStore/FKMapStore
datanucleus-rdbms-397 - Make use of MapStore.put(ObjectProvider op, K key, V value, V previousValue, boolean present) with join map cases
datanucleus-rdbms-398 - Provide simple implementation of JoinMapStore.putAll(ObjectProvider, Map, Map)
datanucleus-mongodb-58 - Implement MongoClientUrl to handle parsing of values from Connection URL
datanucleus-cassandra-37 - Change "cassandra.XXX.using" properties to "datanucleus.cassandra.XXX.using"
datanucleus-core-393 - Query with result class can give StackOverflow if result has a column not in result class
datanucleus-core-398 - Mutation of SCO field before load of old value can result in incorrect datastore contents
datanucleus-rdbms-379 - Bulk Delete with multiple joins fails with null pointer exception
datanucleus-rdbms-381 - NCharColumnMapping getObject/setObject are inconsistent with CharColumnMapping
datanucleus-rdbms-382 - Use of AVG(DISTINCT …) with e.g H2 can create invalid SQL
26 May 2021 : Version 6.0.0.M1 includes the following changes
datanucleus-core-359 - Move to ASM v9.1
datanucleus-core-367 - MX4J jar packages up javax.management so unusable under Java 9+
datanucleus-core-371 - Add validators for datanucleus.generateSchema.create.order, datanucleus.generateSchema.drop.order
datanucleus-core-373 - Support loading a schema script from the CLASSPATH
datanucleus-core-374 - Integrate the various schema generation persistence properties
datanucleus-core-375 - Support JPQL function "EXTRACT" and map to underlying datastore functions
datanucleus-core-377 - Add ability to print api-specific ClassMetaData out
datanucleus-core-380 - Refactor org.datanucleus.query to org.datanucleus.store.query
datanucleus-core-382 - Rationalise all log messages when referring to object to use IdentityUtils "PersistableIdentity"
datanucleus-core-383 - Add ApiAdapter method to abstract some metadata default handling
datanucleus-core-384 - Support persistence.xml v3.0
datanucleus-core-385 - Add enhancer API "Jakarta"
datanucleus-api-jdo-109 - Specifying @Convert doesn’t default to making a field persistent
datanucleus-api-jdo-110 - Support core-377
datanucleus-api-jdo-112 - Abstract 2 metadata handlings to ApiAdapter
datanucleus-api-jpa-122 - Support core-377
datanucleus-api-jpa-123 - Support core-374
datanucleus-api-jpa-124 - Abstract 2 metadata handlings to ApiAdapter
datanucleus-api-jakarta-1 - Initial support for Jakarta Persistence 3.0+
datanucleus-jakarta-query-1 - Initial support for Jakarta Persistence Criteria
datanucleus-rdbms-377 - Support alternate method of retrieving generated keys using column names with application identity
datanucleus-core-53 - Reachability algorith should transition from P NEW to TRANSIENT if object is no longer reachable
datanucleus-core-363 - GenerateSchema mode leaves autoCreate/validate turned on
datanucleus-core-378 - Prevent non-transactional recursive calls to ManagedConnection.close()