DataNucleus AccessPlatform 4.2 Release Notes

The 4.2 release of AccessPlatform is available under the Apache 2 license from our download page

Version 4.2 includes the following over 4.1

  • Remove support for DataNucleus "JDO Typesafe Query" API.

  • Add support for JDO 3.2 JDOQLTypedQuery API.

  • Add support for JDO 3.2 AttributeConverter

  • Add support for JDO 3.2 Query API enhancements

  • Add support for JDO 3.2 JDOQL bitwise operations

  • Remove support for methods that were dropped in JDO 3.2

  • Support for RDBMS SQL Anywhere

No further releases planned; commercial enquiries required.

DataNucleus AccessPlatform 4.2.12

Feb 5th 2017 : Version 4.2.12 includes the following changes



  • datanucleus-core-176 - TRIM handling for JPQL doesn’t cater for multiple component identifiers

  • datanucleus-rdbms-160 - Query with multiple roots when using same type as candidate fails to register the alias of the secondary root

DataNucleus AccessPlatform 4.2.11

Dec 10th 2016 : Version 4.2.11 includes the following changes



DataNucleus AccessPlatform 4.2.10

Nov 19th 2016 : Version 4.2.10 includes the following changes



DataNucleus AccessPlatform 4.2.9

Sep 20th 2016 : Version 4.2.9 includes the following changes



  • datanucleus-core-133 - Use of ObjectId with "PersistableIdentity" doesn’t retrieve correctly

  • datanucleus-rdbms-103 - pm.getObjectById(Class, id) or em.find(Class, id) with COMPLETE-TABLE can throw exception

  • datanucleus-rdbms-116 - If we have generic (abstract) root class, then abstract subclass specifying generic type, then concrete class fails to pick up the override of generic type

DataNucleus AccessPlatform 4.2.8

Aug 25th 2016 : Version 4.2.8 includes the following changes



DataNucleus AccessPlatform 4.2.7

Aug 2nd 2016 : Version 4.2.7 includes the following changes



DataNucleus AccessPlatform 4.2.6

Jun 6th 2016 : Version 4.2.6 includes the following changes



  • datanucleus-core-68 - OperationQueue : performAll for backing store should only process for the specified ObjectProvider

  • datanucleus-core-76 - CompleteClassTable : mark embedded PK columns as being part of PK

  • datanucleus-core-78 - NamingFactory do not cater for unique index name for DISCRIMINATOR_COLUMN

  • datanucleus-api-jdo-16 - Bean Validation : don’t fire off validation on prePersist and preStore, just on one

  • datanucleus-api-jpa-23 - Criteria in(…​).not() is ignoring the NOT in the generic compilation (and generated SQL)

  • datanucleus-api-jpa-20 - Bean Validation : don’t fire off validation on prePersist and preStore, just on one

  • datanucleus-rdbms-49 - Bulk fetch has bug when trying to handle array case, assumes it is a Collection resulting in NPE

DataNucleus AccessPlatform 4.2.5

Apr 7th 2016 : Version 4.2.5 includes the following changes

New Feature

  • NUCCORE-1399 - Add mechanism whereby if there is metadata for a class that is not in the classpath we can just ignore it

  • NUCMAVEN-52 - Support "datanucleus.metadata.ignoreMetaDataForMissingClasses" via enhancer


  • NUCCORE-1389 - java.awt.Color should be in DFG


  • NUCCORE-1391 - SerializableByteBufferConverter should use wrap/remaining to convert to bytes but doesn’t

  • NUCJPA-332 - If metadata specified using orm.xml only, the entity name is not defaulted

  • NUCJPA-333 - Criteria multiple join with no join alias results in exception

  • NUCJPA-334 - Criteria join to a multiple valued path doesn’t work.

  • NUCRDBMS-1013 - JPQL : join to embedded object generates incorrect SQL

  • NUCRDBMS-1017 - Insert of array of persistable objects fails to insert join table when cascade not enabled

DataNucleus AccessPlatform 4.2.4

Feb 20th 2016 : Version 4.2.4 includes the following changes

New Feature

  • NUCJAVAEIGHT-23 - Backport of NUCCORE-1377


  • NUCCORE-1368 - List of "simple" result classes is very restrictive. Extend to include other commonly used "simple" classes

  • NUCCORE-1385 - Query parsing can be improved to better cater for quoting and end of line characters

  • NUCREST-25 - Remove use of NucleusException

  • NUCREST-26 - Change "jdoql" / "jpql" modes so that they take parameter "query" with the encoded query

  • NUCRDBMS-1001 - Oracle supports NVARCHAR but JDBC driver doesn’t acknowledge it


  • NUCCORE-1372 - Nondurable classes should not be L2 cached, ever.

  • NUCCORE-1379 - Dont log about AutoStartMechanism if set to None

  • NUCRDBMS-998 - Prevent SortedSet (and subclasses) be allocated a ListXXXStore since needs unsorted

  • NUCRDBMS-1007 - Apparently need a call to ConnectionFactory.setPool() to avoid log message with DBCP2

  • NUCJAVAEIGHT-22 - Backport of NUCCORE-1376


  • NUCRDBMS-1009 - Parameters in group by expressions are not set on the JDBC statement

DataNucleus AccessPlatform 4.2.3

Jan 13th 2016 : Version 4.2.3 includes the following changes


  • NUCRDBMS-991 - Support for fetch of ReferenceMapping field when there is a single implementation and using FK


  • NUCCORE-1366 - AbstractMemberMetaData.getClassName(false) can return fully qualified name in some situations

  • NUCJPA-329 - JPA MetaModel doesn’t cater correctly for List<nonPC>, and sets to CollectionAttributeImpl instead of ListAttributeImpl

  • NUCRDBMS-990 - Loading of interface field with single implementation with version field is not loading the version

  • NUCRDBMS-992 - Name of candidate key (unique) on join table is not respected

  • NUCRDBMS-995 - TypeConverterMapping.getJavaType is incorrect when roleForMember is set

DataNucleus AccessPlatform 4.2.2

Nov 27th 2015 : Version 4.2.2 includes the following changes

New Feature

  • NUCCORE-1358 - Allow JPQL to exclude subclasses of the candidate

  • NUCRDBMS-983 - Support SAP "SQLAnywhere"


  • NUCCORE-1347 - ClassMetaData has "members" that should be genericised to AbstractMemberMetaData, and lookup of member name improved

  • NUCCORE-1359 - Determine Collection element and Map key/value type from TypeVariable when using ParametrizedType within ParameterizedType

  • NUCCORE-1363 - CompleteClassTable : has check on duplicated column name, but that should not apply when supporting "nested" embedded


  • NUCCORE-1360 - Support PK field conversions for types Currency, TimeZone, UUID

  • NUCJAVAEIGHT-20 - InstantTimestampConverter : use convenience methods to do the conversion

  • NUCMONGODB-165 - Make sure "ownerMmd" is set for FetchFieldManager when embedded, add TODO to resolve

  • NUCJDOQUERY-22 - Add support for TypeVariables


  • NUCCORE-1362 - Persistable elements contained in Collection/Map that is serialised (whole field) are not detached/attached correctly

  • NUCRDBMS-981 - Support NUCCORE-1362

  • NUCRDBMS-985 - SELECT statement generation handling of ordering when multiple cols per order expression should apply quoting as final step but doesnt

  • NUCRDBMS-986 - Creation of mapping in some cases misses the MultiColumnConverter case and doesnt use TypeConverterMultiMapping

DataNucleus AccessPlatform 4.2.1

Nov 6th 2015 : Version 4.2.1 includes the following changes

New Feature

  • NUCRDBMS-970 - SQLStatement needs a way of generation where we don’t use table aliases, and just use table names

  • NUCRDBMS-977 - Support persisting a Collection/Map using a TypeConverter for the whole field


  • NUCRDBMS-971 - SQLite doesn’t provide explicit support for putting nulls last, but can use "{col} IS NULL, {col}"

  • NUCRDBMS-972 - View creation : skip any token that is a "comment" since some RDBMS don’t handle that

  • NUCRDBMS-973 - Delete tables processing : goes off and calls DatabaseMetaData.getColumns for detection of table existence but could just get table type (quicker!)


  • NUCJPA-322 - Support AttributeConverter on a collection field to be for the whole field not just the element

  • NUCRDBMS-975 - Provide access to RDBMSQueryCompilation, and to the SQLStatement(s) that the compilation is made up of.


  • NUCCORE-1355 - JPQLSingleStringParser has missing trimRight handling (typo in trimLeft)

  • NUCCORE-1356 - Metadata processing moves ColumnMetaData to ElementMetaData is not embedded/serialised but should also allow for full field type converter case

  • NUCAPIJDO-112 - @Convert specified on field doesn’t always get processed. Works fine when using @Persistent(converter=…​)

  • NUCRDBMS-974 - Oracle, Firebird require that when using GROUP BY, all non-aggregate SELECT components are in the GROUP BY clause

DataNucleus AccessPlatform 4.2.0.RELEASE

Oct 9th 2015 : Version 4.2 RELEASE includes the following changes

New Feature

  • NUCCORE-1350 - Extend NUCCORE-1344 to allow LEFT JOIN FETCH

  • NUCRDBMS-944 - Support polymorphic joins when using UNION, so only apply to particular UNIONs

  • NUCRDBMS-954 - MySQL : allow setting the COLLATION and CHARACTER SET of any tables that are created

  • NUCRDBMS-958 - Firebird supports date functions using EXTRACT(…​)

  • NUCJDOQUERY-21 - Support persistable classes that are static inline


  • NUCRDBMS-951 - Index auto creation : detect reuse of fields so we don’t try to duplicate indexes

  • NUCRDBMS-945 - SQLStatement needs more flexibility with joins; apply to just one union, pass in join type

  • NUCRDBMS-952 - SchemaTool : delete of schema for classes can try to validate the tables structure before dropping, but should just drop the tables if present

  • NUCRDBMS-955 - Firebird v2 requires use of CHAR_LENGTH for length of VARCHAR fields

  • NUCRDBMS-959 - MySQL doesn’t support "NULLS FIRST | LAST" but does allow ISNULL(…​) extra clause to put nulls last (default is first)

  • NUCRDBMS-962 - Candidate key auto creation : detect reuse of fields so we don’t try to duplicate uniques

  • NUCRDBMS-963 - HSQLDB v2+ doesn’t have LONGVARBINARY, so need to provide own mapping


  • NUCRDBMS-946 - Add RIGHT_OUTER_JOIN as option in DatastoreAdapter that can be unsupported (SQLite)

  • NUCRDBMS-949 - Support date/time methods on SQLite

  • NUCRDBMS-957 - Firebird v2 requires use of SUBSTRING for substring of VARCHAR fields

  • NUCRDBMS-967 - SQLite doesn’t support "ALL|ANY|SOME {subquery}" keyword constructs, so throw exception

  • NUCRDBMS-968 - SQLite LOCATE / String.indexOf should use INSTR(x,y) rather than LOCATE

  • NUCRDBMS-969 - SQLite DELETE / UPDATE JPQL should not use alias since these are not supported with SQLite


  • NUCCORE-1351 - IN predicate unexpectedly gets transformed to EQ predicate

  • NUCRDBMS-942 - Changes to managed entities not detected when element collection is involved

  • NUCRDBMS-943 - Use of query result aliases when using DatastoreAdapter in quoted case needs quotes adding to SQL

  • NUCRDBMS-947 - SQLite String.substring should use SUBSTR(x,y,z) rather than SUBSTRING(x FROM y FOR z)

  • NUCRDBMS-948 - Fix for NUCRDBMS-823 was non-optimum. If using SQLite and IDENTITY but for a Long field, should get LongMapping with IntegerRDBMSMapping

  • NUCRDBMS-950 - Addition of datanucleus.schema.autoCreateSchema for generating schema can fail on some JDBC drivers that don’t support catalog

  • NUCRDBMS-953 - Schema generation unnecessarily creates indexes for the values of element collections

  • NUCRDBMS-956 - JPQL : Referring to map key/value from outer query in a subquery can result in extra joins adding in the subquery

  • NUCRDBMS-961 - Use of persistent property for persistable object (1-1, N-1), and adding override in subclass results in multiple (duplicate) FKs

  • NUCJODATIME-23 - Wrong Implementation of JodaLocalDateSqlDateConverter Class

DataNucleus AccessPlatform 4.2.0.M3

Sept 15th 2015 : Version 4.2 Milestone 3 includes the following changes

New Feature

  • NUCCORE-1344 - JPQL Compilation : support limited polymorphic join

  • NUCAPIJDO-108 - Support StringExpression.matches(String)

  • NUCRDBMS-932 - Support polymorphic joins for entities

  • NUCRDBMS-939 - Support parameters in SELECT clause, particularly when as part of subqueries

  • NUCJAVAEIGHT-18 - Support java.time types in JDO Typesafe


  • NUCAPIJDO-111 - ExpressionImpl has package variables, should be protected to allow extension in other packages

  • NUCRDBMS-935 - SQLStatement : change handling of selects to retain SQLText until statement generation

  • NUCJDOQUERY-20 - Support for java.time LocalXXX types using java8 plugin


  • NUCCORE-1346 - JDO 3.2 requires change to behaviour at close of EC with active transaction. Make it configurable

  • NUCCORE-1348 - Extend NUCCORE-1338 to EmbeddedMetaData

  • NUCAPIJDO-109 - JDO 3.2 : Close of PM with active tx should rollback the transaction rather than throw exception (JDO <= 3.1 behaviour)


  • NUCCORE-1345 - Unable to use version tag on ORM file without having to define the strategy again

  • NUCCORE-1349 - JDOQL/JPQL parse of BigInteger value is parsed internally to be Long and loses precision

  • NUCAPIJDO-110 - Query.saveAsNamedQuery should save under candidate+name if we have one, otherwise just name

  • NUCRDBMS-936 - Addendum to NUCRDBMS-917. Dont create indexes when not indexable column

  • NUCRDBMS-938 - Column creation for overridden field can try to create as IDENTITY when no value strategy defined!

DataNucleus AccessPlatform 4.2.0.M2

Aug 16th 2015 : Version 4.2 Milestone 2 includes the following changes

New Feature

  • NUCCORE-1335 - Add ability to set JDOQL/JPQL strictness on query compilation


  • NUCCORE-1337 - JPQL : support COUNT(*)

  • NUCAPIJDO-101 - Add support for JDOQLTypedQuery NumericExpression.neg()

  • NUCAPIJDO-102 - Add support for JDOQLTypedQuery

  • NUCAPIJDO-103 - Add support for JDOQLTypedQuery BooleanExpression.neg()

  • NUCAPIJDO-104 - Add support for JDOQLTypedQuery CharacterExpression.neg() and com()

  • NUCAPIJDO-107 - Add support for JDOQLTypedQuery NumericExpression.bAnd, bOr, bXor

  • NUCRDBMS-914 - Support (numeric) bitwise AND, OR, XOR for PostgreSQL, MySQL/MariaDB and SQLServer


  • NUCRDBMS-922 - Handle compilation of "interfaceField == :param"


  • NUCCORE-1331 - Modify query parse/compile to split out bitwise operators (&, |, ^) from conditional (&&, ||)

  • NUCCORE-1334 - Add StoreManager option for whether JDOQL bitwise ops are supported

  • NUCCORE-1338 - Modularise the code for deciding if a persistable field comes from the enhancer, so we can ignore the right ones

  • NUCCORE-1340 - When user specifies a TypeConverter for a field and not found later then exception should be thrown

  • NUCAPIJDO-106 - JDO 3.2 : Add PMF supported option for "JDOQL bitwise ops"

  • NUCNEOFORJ-55 - Access to TypeConverter in FetchFieldManager makes no sense since already available in CompleteClassTable

  • NUCJSON-56 - Access to TypeConverter in FetchFieldManager makes no sense since already available in CompleteClassTable

  • NUCHBASE-97 - Access to TypeConverter in FetchFieldManager makes no sense since already available in CompleteClassTable

  • NUCRDBMS-915 - Support NUCCORE-1334 for DatastoreAdapters that do support it

  • NUCRDBMS-923 - Support NUCCORE-1340


  • NUCCORE-1333 - Object retrieval of bidir relation with non-RDBMS datastore can lead to StackOverflowException when non-transactional and relation fields in FetchPlan

  • NUCCORE-1341 - StringUtils.getStringFromStackTrace is broken since 4.0

  • NUCAPIJDO-100 - Some NumericExpression atan, sqrt methods have copy-paste errors for the method to invoke

  • NUCJPA-320 - Parameter inspection via javax.persistence.Query.getParameters is missing parameters from subqueries

  • NUCJPA-321 - JPAQueryParameter needs equals/hashCode

  • NUCNEOFORJ-54 - When doing a query, cater for the class not being known

  • NUCRDBMS-916 - SQLite String.length should use "LENGTH(col)" rather than "CHAR_LENGTH(col)"

  • NUCRDBMS-917 - Make schema index handling consistent for join tables

  • NUCRDBMS-918 - Dynamic schema generation : if using superclass table and table already created, and have 1-N join table, can fail to generate join table

  • NUCRDBMS-919 - TypeConverterMapping needs to cater for mapping basic type to different basic type but doesn’t currently

  • NUCRDBMS-924 - Wrong SQL join order when alias used in ON condition

  • NUCRDBMS-925 - Using entity select in a subquery results in multiple columns selected

  • NUCRDBMS-926 - NPE when using SUBSTRING in result clause

  • NUCRDBMS-927 - Order by in subquery results in wrong SQL

  • NUCRDBMS-929 - Select of candidate id only has bug when we have multiple PK fields, assigns DN_APPID alias twice which is a problem for some datastores

DataNucleus AccessPlatform 4.2.0.M1

Jul 14th 2015 : Version 4.2 Milestone 1 includes the following changes

New Feature

  • NUCCORE-1325 - Support Java generic TypeVariable where declared by class generic type bounds

  • NUCAPIJDO-93 - Support specification of "default" TypeConverter via PMF properties

  • NUCAPIJDO-95 - Support JDO 3.2 AttributeConverter specification via annotations/XML/API

  • NUCJPA-314 - Support specification of datastore identity using XML metadata

  • NUCJPA-316 - Support specification of surrogate version using XML metadata

  • NUCJPA-317 - Provide access to "datastore-id" and "surrogate-version" via helper methods

  • NUCRDBMS-901 - MariaDB support storing millisecs in time columns, needs recognising in adapter

  • NUCRDBMS-911 - When RDBMS supports "FOR UPDATE NOWAIT" provide extension for specifying "NOWAIT"

  • NUCRDBMS-912 - Ability to register an SQLMethod at runtime when not registered via the plugin mechanism

  • NUCRDBMS-913 - Add COUNTSTAR function to equate to SQL "COUNT(*)" since not present in JDOQL/JPQL directly


  • NUCAPIJDO-99 - JDOQLTypedQuery : change toString to include any subquery in the string


  • NUCCORE-1323 - Add generics for element, key, value to all wrappers and backing stores

  • NUCCORE-1324 - Bump repackaged ASM to v5.0.4 from 5.0.3

  • NUCAPIJDO-33 - JDO3.2 : use javax.jdo.query interfaces when typesafe adopted by JDO

  • NUCAPIJDO-94 - Build against groupId=org.datanucleus artifactId=javax.jdo version=3.2.0-m1-SNAPSHOT

  • NUCAPIJDO-97 - PMF.addFetchGroups, PMF.removeFetchGroups, PMF.registerMetadata, Query.saveAsNamedQuery should check for permission "getMetadata"

  • NUCAPIJDO-98 - Support XML XSD/DTD specifications of and use local copy for those

  • NUCJPA-315 - Rename @DatastoreIdentity to be @DatastoreId for consistency

  • NUCRDBMS-899 - Add generics for element, key, value to backing stores (see NUCCORE-1323)

  • NUCRDBMS-904 - PostgreSQL doesn’t support "read uncommitted" so disable in adapter

  • NUCRDBMS-905 - PostgreSQL doesn’t support stored procedures so disable in adapter

  • NUCGUAVA-11 - Support NUCCORE-1323


  • NUCJPA-313 - JPQL generated for Criteria can have too many blanks in FROM clause when no alias

  • NUCJPA-318 - Metamodel Type getJavaType returns wrong classes

  • NUCRDBMS-900 - Schema generation fails if using a FK Map, and a separate unique constraint on a class, and not specifying constraint name

  • NUCRDBMS-902 - PostgreSQL function "SUBSTRING" needs explicit CAST of FROM/FOR args to INTEGER otherwise fails

  • NUCRDBMS-903 - StringExpression.add creates CONCAT (||) of two expressions but should always be in parentheses, and in one case isn’t

  • NUCRDBMS-906 - Change entity after persist causes insert to fail

  • NUCRDBMS-908 - DN4 does not seem to automatically create the DB schema (as in @PersistenceCapable(schema=…​) for any entities annotated as such

  • NUCRDBMS-909 - User specified catalog/schema should be translated into adapter case as required

  • NUCRDBMS-910 - H2 adapter CREATE SCHEMA should use schema rather than catalog