DataNucleus AccessPlatform 4.0 Release Notes

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

Version 4.0 includes the following over 3.2/3.3

  • Runtime will still be supported as runnable for Java7+

  • Extend SchemaAwareStoreManager/SchemaTool to add createSchema/dropSchema

  • Upgrade ODF, Excel, HBase, MongoDB plugins to start using "persistable-identity"

  • Clean up NucleusContext "type" and maybe make NucleusContext an interface, and have PersistenceNucleusContext for persistence runtime. Means that we could also add a SchemaNucleusContext later on for schema tool(s)

  • Transaction savepoints - Basic API present in core, and supported in RDBMS (needs testing)

  • Clean up MetaDataManager and maybe make it an interface.

  • Move majority of schema operations from StoreManager to StoreSchemaHandler

  • Upgrade ASM to v5.0

  • Generalise TypeConverters so they can support conversion to multiple datastore column values and usable by all store plugins

  • Support Java8 (including javax.time - so build requirement for java8 plugin at least will be Java8)

  • Official support for Cassandra v1.2+

  • Upgrade relevant store plugins to use Table/Column structure and benefit from common features, for ODF, Excel, JSON, MongoDB, Neo4j, HBase

  • Upgrade enhancement process to enhance to org.datanucleus.enhancer.Persistable so that users need to have "datanucleus-core.jar" in the CLASSPATH and not "jdo-api.jar".

  • Drop EclipsePluginRegistry so all OSGi users should use OSGiPluginRegistry

  • Schema Evolution : restructure schema properties to allow for all we will need when adding/removing fields etc

  • JPA : no longer needs to have jdo-api.jar present

  • JPA : allow "native" query for Cassandra

  • Cassandra : support for native CQL queries via JDO or JPA

  • RDBMS : support for HikariCP and DBCP2 connection pools

  • RDBMS : ability to use single connection per PM/EM (rather than 1 for transactional operations, and 1 for non-transactional operations)

  • RDBMS : removed the need to create JavaTypeMapping classes when the user type has a TypeConverter

  • JSON : support for embedded 1-1 relation fields/properties

  • Excel/ODF/JSON/MongoDB/Neo4j/HBase/Cassandra : move to using "core" definition of table/columns meaning access to generalised features tested on other datastores

No further releases planned; commercial enquiries required.

DataNucleus AccessPlatform 4.0.6

Mar 1st 2015 : Version 4.0.6 includes the following changes


  • NUCCORE-1273 - Support for NUCRDBMS-848 for DN 4.0

  • NUCCORE-1274 - Support CASE / IF/ELSE "when" conditions that are not completely defined (i.e depend on previous when conditions)

  • NUCRDBMS-854 - Support NUCCORE-1274


  • NUCRDBMS-848 - "max" value generator provides wrong id if 2 objects are persisted in one transaction

  • NUCRDBMS-856 - ViewImpl seems to have regression in validate() method

  • NUCEXCEL-81 - Numeric object wrapper fields can fail on retrieval due to falling back to TypeConverter

  • NUCEXCEL-82 - StoreEmbeddedFieldManager has incorrect logic in detection of embedded sub field

  • NUCEXCEL-84 - Persist of object with composite PK results in blank row in worksheet before the next inserted object

  • NUCODF-61 - StoreEmbeddedFieldManager has incorrect logic in detection of embedded sub field

DataNucleus AccessPlatform 4.0.5

Feb 2nd 2015 : Version 4.0.5 includes the following changes


  • NUCRDBMS-845 - Handling of case expression should check for non-Boolean conditional expression, and convert to CaseNumericExpression if possible

  • NUCRDBMS-852 - Support query fetch of Collection/Map/Array fields when serialised (i,e stored in single column of owner table).


  • NUCRDBMS-851 - Add check on CASE "action" expression types for consistency


  • NUCRDBMS-847 - JDOQL statement with multi-tenant PersistenceManager

  • NUCMONGODB-151 - JDOQL COUNT query fails for unknown classes

  • NUCLDAP-66 - AttributeStrategy : When reassigning N-1 owner, allow for new owner not yet being persistent

  • NUCEXCEL-80 - Make sure StoreData is populated before using fetchObject(…​)

  • NUCODF-60 - Make sure StoreData is populated before using fetchObject(…​)

DataNucleus AccessPlatform 4.0.4

Nov 15th 2014 : Version 4.0.4 includes the following changes

New Feature

  • NUCLDAP-63 - Add ability to specify "mapping-strategy" for a field without relying on random "join" information


  • NUCCORE-1262 - Simplify Invalid[Class/Member]MetaDataException constructor to just take in params list and no class/member name

  • NUCLDAP-64 - StoreFieldManager/FetchFieldManager create an instance of mapping strategy for every objects instance of every basic field!

  • NUCRDBMS-838 - Start restructuring of ClassAdder to allow easier updates/locking in the future


  • NUCCORE-1257 - AbstractMetaData population moving of ColumnMetaData to element/value when using collection/map is incomplete, should MOVE not COPY

  • NUCCORE-1259 - AbstractConnectionFactory/ConnectionFactory should have factoryName and resourceType and not use "options"

  • NUCCORE-1261 - Backing store wrappers don’t need to hold "queued" property


  • NUCCORE-1258 - transaction options is lost, leading to ISOLATION LEVEL violation

  • NUCAPIJDO-80 - JDOPersistenceManagerFactory.getPersistenceManagerFactory(Map overridingProps) doesn’t cater for people abusing API of java.util.Properties

  • NUCCASSANDRA-60 - Make sure resultObjects in CassandraQueryResults are dereferenced

  • NUCRDBMS-792 - Map.containsKey generates invalid query

DataNucleus AccessPlatform 4.0.3

Oct 2nd 2014 : Version 4.0.3 includes the following changes

New Feature

  • NUCJPA-283 - Expose access to the underlying connection, so people can perform native operations

  • NUCJPA-285 - Allow EntityManager.createNativeQuery to create a query using a non-SQL query language

  • NUCCASSANDRA-21 - Support native Cassandra CQL queries


  • NUCCORE-1256 - Extend NUCCORE-1233 support for JDOQL "IF …​ ELSE IF …​ ELSE …​" to require final ELSE or throw exception

  • NUCRDBMS-730 - Persist of M-N relation can be inefficient; currently always does SELECT to see if present then INSERT.


  • NUCCORE-1248 - NamingFactory.getConstraintName for member should also pass in the class name so we can name indexes when part of table for subclasses

  • NUCCORE-1249 - Drop SCOMtoN since we can just check if it is M-N relation or if collection

  • NUCCORE-1250 - Add method to MetaDataManager that returns the enhanced method name prefix (i.e "dn")

  • NUCCORE-1253 - Move identity conversion handling into core from api.jdo/api.jpa

  • NUCCORE-1255 - Add method for what query language is considered "native" for a store

  • NUCAPIJDO-79 - Add Transaction set/getNontransactionalWriteAutoCommit

  • NUCJPA-282 - Support @ConstructorResult

  • NUCCASSANDRA-58 - Support NUCCORE-1248

  • NUCCASSANDRA-59 - Support NUCCORE-1255

  • NUCMONGODB-150 - Support NUCCORE-1248

  • NUCRDBMS-827 - Support constructor mappings in SQL query results

  • NUCRDBMS-833 - Support NUCCORE-1255


  • NUCCORE-1252 - ByteArrayByteBufferConverter toMemberType ByteBuffer to byte[] conversion fails

  • NUCCORE-1254 - Backed SCO wrappers should not add operations to queue when the owner object is not yet inserted

  • NUCJPA-281 - CriteriaQuery needs to respect any distinct specified on "select" but currently ignores it

  • NUCCASSANDRA-57 - JPQLQuery should have latest candidate class code (copy from HBase for example)

  • NUCRDBMS-829 - Embedded object causes: IllegalArgumentException: out of field index

  • NUCRDBMS-830 - ResultClassROF can throw exception if it finds an enhancement method in the result class of a query

  • NUCRDBMS-831 - RDBMSStoreManager generates comments which are bad syntax in Mysql

  • NUCRDBMS-832 - Persist of object with Collection (via join table) containing some new and some detached elements doesn’t create the join table entries

DataNucleus AccessPlatform 4.0.2

Aug 29th 2014 : Version 4.0.2 includes the following changes

New Feature

  • NUCRDBMS-814 - Support maxActive on DBCP2 connection pool


  • NUCRDBMS-823 - SQLite only supports "autoincrement" on INTEGER columns, so should default to that

  • NUCRDBMS-824 - Fields should be ordered by name in insert statement generation

  • NUCRDBMS-826 - Move to inner class of DefaultConnectionPoolFactory


  • NUCCORE-1241 - Support result set value conversion from Long/Integer to Boolean in ClassUtils.convertValue

  • NUCCORE-1242 - Fix ByteBuffer converters to handle null input/output

  • NUCCORE-1245 - JDO "persistence-capable-superclass" metadata was deprecated in JDO2. Remove it since we use reflection anyway

  • NUCJPA-275 - Throw NoPersistenceUnitException when not found in creation of EMF via PersistenceProvider

  • NUCJPA-280 - Enable close of query results at ExecutionContext close

  • NUCNEOFORJ-52 - Upgrade to Neo4j 2.1


  • NUCCORE-1243 - OSGI classloading problem

  • NUCCORE-1246 - TypeConverter cannot use basic inheritance

  • NUCJPA-277 - Annotation attribute for @Index "unique" is being used incorrectly

  • NUCJPA-278 - Some types of fields are setting allowsNull as false when shouldn’t, dependent on annotations

  • NUCRDBMS-779 - Without explicit commit, fetching multiple results fails with Firebird

  • NUCRDBMS-790 - Boolean fields are left as null when selecting objects using SQL query

  • NUCRDBMS-815 - NullPointerException when setting multiple Date parameters

  • NUCRDBMS-816 - Incorrect handling of join expressions when using multiple joins

  • NUCRDBMS-817 - Using Collection with class (Discriminator.value_map) with no subclasses (i.e redundant discriminator)

  • NUCRDBMS-818 - Schema Tool throws NullPointerException when @Index name does not match a field

  • NUCRDBMS-819 - HSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER

  • NUCRDBMS-820 - PostgreSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER

  • NUCRDBMS-821 - SQLTableAlphaNamer doesn’t check for lowercase when looking for name clashes

  • NUCRDBMS-822 - possible bug in

  • NUCJAVAEIGHT-15 - HSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER

  • NUCJAVAEIGHT-16 - Persist of LocalDateTime/LocalTime is not setting nanos

  • NUCJAVAEIGHT-17 - PostgreSQL getSecond returns Integer/Decimal depending on millisecs, so should cast to INTEGER

DataNucleus AccessPlatform 4.0.1

Jul 19th 2014 : Version 4.0.1 includes the following changes

New Feature

  • NUCCORE-1233 - Support JDOQL compilation of "IF (expr) expr ELSE IF (expr) expr ELSE expr"

  • NUCCASSANDRA-56 - Adding support for uuid datastoreType of Cassandra

  • NUCHBASE-96 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCEXCEL-78 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCODF-59 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCJSON-53 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCMONGODB-148 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCRDBMS-807 - Support mapping java.util.UUID to PostgreSQL native "uuid" column type

  • NUCRDBMS-810 - Support for TIME and DATE JDBC data types for MS SQL Server 2008 and newer

  • NUCNEOFORJ-51 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCODF-59 - Support cascade-persist/cascade-update on 1-1/1-N fields

  • NUCJAVAEIGHT-14 - Provide Java8 variants of Collection/Map wrappers so that any new methods can be supported.


  • NUCCORE-1237 - CompleteClassTable should check for columns with same name in the table and throw an exception


  • NUCCORE-1230 - Upgrade ASM to 5.0.3

  • NUCCORE-1231 - Add basic support for temporal literals as Strings

  • NUCCORE-1236 - Support update of L2 cache when refresh() is called

  • NUCRDBMS-805 - Add simple handling of temporal literal as String

  • NUCRDBMS-806


  • NUCCORE-1235 - RDBMSStoreManager.addSchemaCallback does not populate the schemaCallbacks correctly

  • NUCCORE-1239 - 1-1 Birdirecional relation management fails when using optimistic tx

  • NUCAPIJDO-78 - Creation of implementation of persistent abstract class / interface creates metadata with full name (including package)

  • NUCJPA-274 - NamedStoredProcedureQueries doesn’t set procedure name on processed stored procs metadata

  • NUCCASSANDRA-55 - Could not serialize byte[] @Serialized member on Cassandra store

  • NUCEXCEL-79 - SchemaTool doesn’t make full use of generalised Table; should create CompleteClassTable when not present

  • NUCMONGODB-149 - SchemaTool doesn’t make full use of generalised Table; should create CompleteClassTable when not present

  • NUCRDBMS-808 - Datanucleus can’t find sequence in PostrgreSQL when persistence property '' is set

  • NUCRDBMS-809 - Inconsistent behavior in enum value conversion to/from numeric value in RDBMS using 'enum-value-getter' extension

  • NUCRDBMS-811 - Enum extension "enum-check-constraint" is incorrectly handled if also using extension "enum-value-getter"

  • NUCRDBMS-812 - When executing StoredProcedure with multiple result sets, the close of the first results will close the statement!

  • NUCRDBMS-813 - 1-N FK bidir relationship management failing when using optimistic tx

DataNucleus AccessPlatform 4.0.0.RELEASE

Jun 13th 2014 : Version 4.0 RELEASE includes the following changes

New Feature

  • NUCMONGODB-147 - Support multicolumn TypeConverters

  • NUCHBASE-94 - Support multicolumn TypeConverters

  • NUCNEOFORJ-50 - Support multicolumn TypeConverters


  • NUCCORE-1223 - should have Table field since many store plugins use this now and we should encourage it

  • NUCCORE-1227 - UUIDStringConverter should implement ColumnLengthDefiningTypeConverter and set length to 36

  • NUCRDBMS-802 - Change to extend

  • NUCSPATIAL-39 - Formatting ol files with the latest Datanucleus code convention xml.

  • NUCSPATIAL-50 - Java8 related javadoc enhancements needed


  • NUCCORE-1121 - Remove AbstractMemberMetaData.getColumn since deprecated for some time

  • NUCCORE-1221 - NamingFactory getIndexName() methods should be renamed to getConstraintName() so we can use for unique constraint and FK constraint also

  • NUCCORE-1222 - Change ForeignKeyMetaData to extend ConstraintMetaData

  • NUCCORE-1224 - Refactor Table.getIdentifier -> Table.getName, Column.getIdentifier -> Column.getName

  • NUCCORE-1225 - Update JdbcType to use ordinal as the java.sql.Types value allowing lookup in RDBMS

  • NUCCORE-1226 - Add persistence property to set the preference for embedding of a PC object

  • NUCCORE-1228 - CompleteClassTable should add "column" for nested array/map holder

  • NUCEXCEL-77 - Remove need for SchemaVerifierImpl since does nothing currently anyway

  • NUCODF-58 - Remove need for SchemaVerifierImpl since does nothing currently anyway

  • NUCMONGODB-146 - Change schema management to use

  • NUCHBASE-85 - HTablePool is deprecated in HBase 0.94.11, 0.95.2 onwards

  • NUCHBASE-93 - Change schema management to use

  • NUCHBASE-95 - Use column name from Table/Column structure and extract familyName/qualifierName from that name

  • NUCJSON-52 - Remove need for SchemaVerifierImpl since does nothing currently anyway

  • NUCNEOFORJ-49 - Use generic Table/Column code for Node/property namings and ditch ad-hoc code

  • NUCRDBMS-803 - Refactor some of the method names around DatastoreIdentifier, Table, Column to make more logical to casual reader

  • NUCRDBMS-804 - Enable TypeConverterMapping.getDefaultLength to use converter length (when defined)


  • NUCCORE-1204 - Object is left in 2nd level cache when commit() fails

  • NUCJAVAEIGHT-13 - Typoe in plugin.xml for InstantLongConverter

DataNucleus AccessPlatform 4.0.0.M4

May 29th 2014 : Version 4.0 Milestone 4 includes the following changes

New Feature

  • NUCCORE-1216 - Allow option of Query results being closed when ExecutionContext is closed

  • NUCCASSANDRA-49 - Support schema creation "USING" options via metadata

  • NUCJAVAEIGHT-11 - Add support for Instant persisted as Long (numeric)

  • NUCJAVAEIGHT-12 - Support for OffsetTime, OffsetDateTime


  • NUCCORE-1203 - Logging around transactional cache enlist/evict is far from optimum and can just show evictions

  • NUCCORE-1208 - Transaction cache cpu improvement

  • NUCCORE-1209 - Constructor cache in IdentityManagerImpl

  • NUCCORE-1210 - Configuration.getManagerOverrideableProperties() costs quite a lot of cpu during ExecutionContext creation

  • NUCCORE-1212 - Change Localisation sub-system to allow each plugin to register its bundle, and specify language/errorCodes via System properties

  • NUCCORE-1213 - Cache frequently accessed properties in fields

  • NUCCORE-1214 - Cache populated ClassMetadata

  • NUCCORE-1215 - should be genericised with the java type it represents

  • NUCCORE-1217 - Refactor ExecutionContext callback handler method names to make clearer their usage

  • NUCCORE-1219 - Add method to AbstractJavaQuery to compile the query to get just the generic compilation

  • NUCAPIJDO-75 - Decrease lock contention during PersistenceManager.close()


  • NUCCORE-1195 - Upgrade ASM to 5.0.2

  • NUCCORE-1196 - Make StoreManager.getStrategyForNative public

  • NUCCORE-1197 - Various ApiAdapter methods are now no longer needed since we use a DataNucleus-centric enhancement contract

  • NUCCORE-1198 - Drop org.datanucleus.metadata.PersistenceFlags, now part of Persistable interface

  • NUCCORE-1200 - ExecutionContext.newQuery is not needed and all queries should be instantiated via QueryManager

  • NUCCORE-1201 - Move query language name conversion to JDO API layer

  • NUCCORE-1205 - Add accessor for the StoreManager for the managed object

  • NUCCORE-1206 - Add TypeConverter for Calendar to (millis, timezone)

  • NUCCORE-1207 - Collection wrappers (with backing store) should likely throw IllegalXXXException when add() fails in the datastore

  • NUCCORE-1211 - Change QueryManager to be interface, with default implementation

  • NUCCORE-1218 - org.datanucleus.metadata.FieldRole should be enum to give type safety

  • NUCJPA-271 - Support NUCCORE-1197 removing methods from ApiAdapter

  • NUCJPA-273 - JPAAnnotationReader has line which sets jdbcType of all boolean fields to SMALLINT. No reason why we need this so disable

  • NUCAPIJDO-74 - Support NUCCORE-1197 removing methods from ApiAdapter

  • NUCRDBMS-794 - Support NUCCORE-1197 removing methods from ApiAdapter

  • NUCRDBMS-796 - Change default Calendar persistence to single column (timestamp)

  • NUCRDBMS-798 - PostgreSQL : support OFFSET/FETCH for ranges

  • NUCRDBMS-799 - PostgreSQL : add dummy BOOLEAN JDBC type

  • NUCRDBMS-801 - PostgreSQL : add dummy TINYINT JDBC type

  • NUCNEODATIS-30 - Support NUCCORE-1197 removing methods from ApiAdapter

  • NUCACCESS-128 - Migrate projects to standard maven 2 layout

  • NUCACCESS-129 - Release own version of javax.persistence jar and remove use of EclipseLink JPA API jar


  • NUCCORE-1199 - Improve logic for transient id handling to check for null

  • NUCCORE-1202 - Missing release resource in non-tx handling

  • NUCJPA-270 - JPA spec requires a unique constraint on a OneToOne unidir relation by default

  • NUCJPA-272 - Query.getParameter methods using position return that parameter is not found for JPQL

  • NUCRDBMS-795 - Query with aggreg.function on single-column calendar field doesn’t work due to wrong metadata handling

  • NUCRDBMS-797 - MSSQL OFFSET is not optional when using FETCH

DataNucleus AccessPlatform 4.0.0.M3

Apr 27th 2014 : Version 4.0 Milestone 3 includes the following changes

New Feature

  • NUCEXCEL-74 - Support multicolumn TypeConverters

  • NUCCASSANDRA-7 - Support in-datastore querying of primary JDOQL/JPQL operations

  • NUCCASSANDRA-47 - Support schema evolution (new columns, delete columns)

  • NUCJSON-47 - Support multicolumn TypeConverters

  • NUCJSON-50 - Supported embedded 1-1 fields stored as nested in the JSON object

  • NUCODF-55 - Support multicolumn TypeConverters

  • NUCJAVAEIGHT-9 - Support LocalTime, LocalDate, LocalDateTime getSecond, getMinute, getHour, getDayOfMonth, getMonth, getYear in in-memory query evaluation

  • NUCJAVAEIGHT-10 - Support getHour, getMinute, getSecond, getYear, getMonthValue, getDayOfMonth method invocation on LocalXXX classes with RDBMS


  • NUCCORE-922 - JPA : Enhance classes to implement org.datanucleus.enhancer.Persistable to avoid dependency on JDO

  • NUCCORE-1097 - Genericise ExecutionContext/ObjectProvider interfaces

  • NUCCORE-1175 - Rename "" to "", and "" to ""

  • NUCCORE-1176 - Add TypeConverters for converting Boolean to "Y"/"N" and 1,0

  • NUCCORE-1181 - JDOQL/JPQL : add compiler checks for use of aggregate in result clause with incorrect arguments

  • NUCCORE-1186 - ValueGeneration class is pointless and should be removed

  • NUCAPIJDO-73 - Support NUCCORE-922 (change bytecode enhancement contract)

  • NUCJPA-269 - Support NUCCORE-922 (change bytecode enhancement contract)

  • NUCJSON-48 - javadoc improvements according to Java8 warning and errors

  • NUCRDBMS-782 - Add Expression/Literal for handling TypeConverterMapping so we can avoid having to create Expression/Literal (and hence XXXMapping) for more types

  • NUCJAVAEIGHT-8 - Refactor so that root package is

  • NUCJODATIME-20 - Refactor so that root package is

  • NUCGUAVA-8 - Refactor so that root package is


  • NUCCORE-934 - Restrict all references to PersistenceCapable/Detachable to isolated packages

  • NUCCORE-1173 - Remove checks on "stackmapFrames" since we are using Java7+ now

  • NUCCORE-1174 - Upgrade to javax.cache v1.0.0 now that final is out

  • NUCCORE-1177 - Rename "org.datanucleus.query.evaluator.memory" to "org.datanucleus.query.inmemory"

  • NUCCORE-1178 - Names of in-memory query evaluators are too verbose

  • NUCCORE-1180 - Add StoreManager.OPTION_ORM_EMBEDDED_PC_NESTED to signify that the store supports embedding an object nested in the owner object (like JSON)

  • NUCCORE-1182 - Split runReachability out of ObjectProvider so that ReachabilityFieldManager is the only place we provide the pbr-at-commit process

  • NUCCORE-1183 - Move NullCallbackHandler to org.datanucleus.state

  • NUCCORE-1184 - Move ObjectProvider.nullifyFields() to ExecutionContextImpl reachability at commit code

  • NUCCORE-1185 - org.datanucleus.query.node adds no value and should be merged into org.datanucleus.query.compiler

  • NUCCORE-1187 - ExecutionContext newObjectProviderForEmbedded are simply relays and should be removed; use ObjectProviderFactory direct

  • NUCCORE-1190 - Change bytecode enhancement of copyKeyFieldsToObjectId to avoid use of JDOHelper

  • NUCCORE-1191 - Remove EclipsePluginRegistry

  • NUCCORE-1194 - Drop support for <extension vendor-name="jpox" …​>

  • NUCEXCEL-76 - Support NUCCORE-1097

  • NUCCASSANDRA-50 - If user specified jdbc-type of "char", override with "varchar" internally (since there is no "char" in Cassandra)

  • NUCCASSANDRA-51 - IncrementGenerator should use key as "sequence-name" if provided (user input), otherwise "field-name" if for a field, otherwise "root-class-name"

  • NUCCASSANDRA-52 - Detect members using TypeConverter with datastore type of subclass of java.util.Date, and change to converter with datastoreType=java.util.Date

  • NUCCASSANDRA-53 - Move to Datastax Cassandra driver v2.0.1

  • NUCCASSANDRA-54 - Support NUCCORE-1097

  • NUCHBASE-92 - Support NUCCORE-1097

  • NUCJSON-49 - Use Base64 under org.datanucleus.util instead of own copy

  • NUCJSON-51 - Support NUCCORE-1097

  • NUCLDAP-62 - Support NUCCORE-1097

  • NUCMONGODB-144 - Support NUCCORE-1097

  • NUCNEOFORJ-48 - Support NUCCORE-1097

  • NUCODF-57 - Support NUCCORE-1097

  • NUCRDBMS-785 - Support NUCCORE-1175

  • NUCRDBMS-787 - SQLMethod method should have signature getExpression(SQLExpression, List<SQLExpression>) i.e include generics

  • NUCRDBMS-789 - Support NUCCORE-1097

  • NUCRDBMS-791 - Drop use of "java-version" on java types

  • NUCSPATIAL-51 - Add TypeConverter for Rectangle -> x,y,width,height and fix Point -> x,y to use int

  • NUCSPATIAL-52 - Add multicolumn TypeConverter for Point2D.Double and Point2D.Float

  • NUCGUAVA-7 - Support NUCCORE-1175

  • NUCGUAVA-9 - Support NUCCORE-1097


  • NUCCORE-1188 - PersistenceUnit "exclude-unlisted-classes" is processed incorrectly ignoring the value in the element

  • NUCCORE-1193 - Bad code in JavaUtils.initialiseJREVersion() [in general] // fails on Android [in concrete]

  • NUCJPA-268 - inconsistent property name: javax.persistence.sql.load-script-source

  • NUCRDBMS-783 - AVG on integral number drops decimals on some databases

  • NUCRDBMS-784 - MapSizeMethod uses wrapper Map rather than java.util.Map!

  • NUCRDBMS-786 - Catch special case SQL method classes (ARRAY etc) to avoid ClassNotResolvedException

  • NUCSPATIAL-49 - OSGi manifest is missing some package imports

DataNucleus AccessPlatform 4.0.0.M2

Apr 1st 2014 : Version 4.0 Milestone 2 includes the following changes

New Feature

  • NUCCORE-1147 - Extend datanucleus.readOnlyDatastore so that it can be specified on a PM

  • NUCCORE-1154 - Add TypeConverter extension for converting object to multiple components, from java type to multiple datastore types

  • NUCCORE-1160 - Support javax.validation annotations @Size, @NotNull to imply metadata and avoid the need to duplicate that information with JDO/JPA annotations

  • NUCCORE-1163 - Allow a TypeConverter to define the default length limit of a String column

  • NUCCASSANDRA-3 - Support optimistic versioning

  • NUCCASSANDRA-18 - Support non-PC collections, maps

  • NUCCASSANDRA-28 - Support members (fields/properties) mapped to more than 1 column

  • NUCCASSANDRA-29 - Default to Session per PMF/EMF, but allow persistence property to set it

  • NUCCASSANDRA-35 - Support compound identity

  • NUCCASSANDRA-36 - Support user-defined TypeConverter on field/property

  • NUCCASSANDRA-37 - Support TypeConverter "autoApply" so user can define default handling for a java type

  • NUCJSON-27 - Support embedded 1-1 fields

  • NUCRDBMS-771 - Support HikariCP connection pool

  • NUCACCECLIPSE-6 - DataNucleus Context Menu does not appear in Project Explorer

  • NUCJAVAEIGHT-7 - Add support for Duration, Period, Year, Month, DayOfWeek, YearMonth, MonthDay, ZoneId, Instant, OffsetTime, OffsetDateTime, ZonedDateTime


  • NUCCORE-1144 - Update NamingFactory to take a set of reserved keywords that an identifier has to be quoted to use

  • NUCCORE-1145 - Provide TypeConverters for byte[], int[], float[], etc to ByteBuffer and clean up TypeConversionHelper type safety

  • NUCCORE-1157 - Split TypeManager converter helpers out into TypeConverterHelper

  • NUCCORE-1164 - Add TypeConverters for javax.time LocalDateTime -> Timestamp, LocalTime -> Time, LocalDate -> Date

  • NUCCORE-1166 - Extend CompleteClassTable to support multiple columns per member

  • NUCCORE-1172 - Some calls to ObjectProvider.loadUnloadedFields only require relation fields loading

  • NUCCASSANDRA-25 - Change javaType-datastoreType conversion process to use TypeConverters

  • NUCCASSANDRA-30 - Support persistence of members of type Locale (or array of Locale)

  • NUCCASSANDRA-42 - Support cascadePersist/cascadeUpdate for reachability

  • NUCCASSANDRA-43 - Support interface fields

  • NUCEXCEL-75 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control

  • NUCODF-56 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control

  • NUCJSON-46 - Adopt Table/Column/CompleteClassTable data structures rather than ad-hoc index/schema control

  • NUCRDBMS-775 - UUIDMapping, URLMapping, URIMapping can be removed and just fallback to TypeConverterStringMapping to get the same results

  • NUCRDBMS-776 - LocaleMapping, CurrencyMapping, TimeZoneMapping, StringBufferMapping, StringBuilderMapping can be removed and just fallback to TypeConverterStringMapping to get the same results

  • NUCRDBMS-778 - Update mapping/mappingClass lookup process to allow for TypeConverter specified via jdbcType

  • NUCRDBMS-781 - Support multi column TypeConverter and wrap them in a XXXMapping

  • NUCJODATIME-18 - Add TypeConverters for DateTime -> Timestamp, LocalTime -> Time, LocalDate -> Date and maybe also Timestamp


  • NUCCORE-1105 - Upgrade repackaged ASM to v5 when it is released

  • NUCCORE-1142 - Add TypeConverter for Serializable -> java.nio.ByteBuffer

  • NUCCORE-1143 - Add StoreManager.OPTION_ORM_FOREIGN_KEYS to signify that the store supports FKs

  • NUCCORE-1146 - Add StoreManager.OPTION_APPLICATION_COMPOSITE_ID to signify that the store supports multiple PK fields

  • NUCCORE-1148 - Change "" 'PreserveCase' to be 'MixedCase' to be match internal namings

  • NUCCORE-1151 - In-memory query evaluation : improve ordering support so we can process DyadicExpression, InvokeExpression etc

  • NUCCORE-1152 - In-memory query evaluation : support for Map.containsEntry(key,val)

  • NUCCORE-1158 - Change TypeManager to be an interface, and have default implementation

  • NUCCORE-1159 - Fix NamingFactory index generation to respect user-specified names, and add method for datastore-id, discriminator, multitenancy index

  • NUCCORE-1161 - Add TypeConverter for converting java.sql.Timestamp -> String

  • NUCCORE-1162 - Fix MultiMap.remove(Object,Object) method to avoid clash with Java8 new Map method

  • NUCCORE-1165 - Change javax.time default TypeConverter so we persist as Timestamp/Time/Date wherever possible (hence queryable)

  • NUCCORE-1168 - Remove default TypeConverter for java.util.Date/java.sql.Date/java.sql.Time/java.sql.Timestamp/BigDecimal/BigInteger since persistable natively

  • NUCCORE-1169 - Remove references to javax.time now that we use a separate plugin for Java8 time

  • NUCCORE-1170 - Store Column "jdbcType" with so store plugin don’t need to do lookups

  • NUCCORE-1171 - Add JdbcType enum and change ColumnMetaData.jdbcType to be of that type

  • NUCCASSANDRA-10 - Support quoted table/column identifiers (i.e case sensitive)

  • NUCCASSANDRA-23 - Add internal table/column definition, to avoid continual column naming lookups

  • NUCCASSANDRA-32 - Add list of reserved keywords and prohibit use of them as identifiers

  • NUCCASSANDRA-33 - Support persistence of Collection<Enum> etc

  • NUCCASSANDRA-40 - Map BigDecimal to Cassandra "decimal" type

  • NUCCASSANDRA-41 - Support java.util.Queue as Cassandra "list" type

  • NUCCASSANDRA-45 - Support null elements in Collection<PC> and null keys in Map<?, PC>

  • NUCCASSANDRA-46 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCHBASE-90 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCHBASE-91 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks

  • NUCMONGODB-143 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks

  • NUCEXCEL-72 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCEXCEL-73 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks

  • NUCODF-53 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCODF-54 - Optimistic version handling should use VersionHelper to get next version, and only use isVersioned for determining whether to do checks

  • NUCJSON-45 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCRDBMS-769 - Adopt NamingCase instead of IdentifierCase so we have commonality across all store plugin

  • NUCRDBMS-772 - Support NUCCORE-1157 (TypeConverterHelper)

  • NUCRDBMS-773 - Support DBCP2 as connection pool (changed class names from DBCP v1.x)

  • NUCRDBMS-774 - Support NUCCORE-1162, avoid Java8 naming clash

  • NUCRDBMS-777 - Drop ObjectAsXXXMapping

  • NUCRDBMS-780 - Drop javax.time Mapping/Expression/Literal classes now that we have TypeConverters

  • NUCJODATIME-19 - Drop Mapping/Expression/Literal classes for LocalDate, LocalTime, DateTime since we have TypeConverters now

  • NUCJAVAEIGHT-1 - Update java.time support to reflect packaging in "Java 8"


  • NUCCORE-1149 - Initialisation of is incorrect

  • NUCCORE-1150 - InMemory query evaluation of max/min/avg/sum(arg) when no candidates is returning an integer : should return the type of the arg

  • NUCCORE-1156 - java.sql.Timestamp SCO wrapper should also preserve nanos when cloning/detaching etc

  • NUCCORE-1167 - NamingFactory column namer when embedded metadata has <column> but no name generates null column name!

  • NUCCASSANDRA-31 - Empty collection fields are being stored as null, and then when read back in are null rather than empty

  • NUCCASSANDRA-39 - User specified table name for "increment" value generator table is not being respected

  • NUCCASSANDRA-44 - Surrogate version should be long or Timestamp for consistency with RDBMS

  • NUCRDBMS-770 - Timestamp maximum precision is milliseconds

  • NUCMAVEN-47 - Exception (Error 87 - commandline too long) when starting the enhancer in forked mode

  • NUCACCECLIPSE-11 - Exception (Error 87 - commandline too long) during the enhancer is called within eclipse (plugin version 3.0.1)

DataNucleus AccessPlatform 4.0.0.M1

Mar 1st 2014 : Version 4.0 Milestone 1 includes the following changes

New Feature

  • NUCCORE-159 - Support for transaction "savepoints"

  • NUCCORE-1116 - SchemaTool : support create/delete of schema, and rename the current options to reflect that they only processes it for the input classes

  • NUCCORE-1124 - Add ability to specify NamingFactory (non-RDBMS datastores)

  • NUCCORE-1126 - Add support to NamingFactory so that it can provide names for embedded member(s), including nested embedded members

  • NUCCORE-1129 - Add persistence property to allow single connection to be used for a PM/EM, shared between transactional and nontransactional operations

  • NUCCORE-1136 - Provide method on StoreManager to remove knowledge of a class, so it can be reloaded (by such as JRebel)

  • NUCAPIJDO-72 - Add method to PMF to "unmanage" a class, allowing for it to be reloaded by such as JRebel

  • NUCCASSANDRA-1 - Support basic CRUD operations (CassandraPersistenceHandler)

  • NUCCASSANDRA-2 - Support datastore-identity

  • NUCCASSANDRA-4 - Support schema generation of tables/constraints

  • NUCCASSANDRA-5 - Support schema generation of keyspace (create/drop)

  • NUCCASSANDRA-8 - Support "increment"/"table" value generator

  • NUCCASSANDRA-9 - Support execution and in-memory evaluation of queries

  • NUCCASSANDRA-11 - Support embedded PC fields

  • NUCCASSANDRA-12 - Support serialised fields

  • NUCCASSANDRA-13 - Support multitenancy by discriminator

  • NUCCASSANDRA-14 - Support persistence of Enums

  • NUCCASSANDRA-15 - Support persistence of Maps

  • NUCCASSANDRA-19 - Support DDL with SchemaTool

  • NUCRDBMS-708 - Add ability to create/drop a schema ultimately via SchemaTool

  • NUCRDBMS-760 - Support transaction savepoint API, relaying call to JDBC Connection object

  • NUCMAVEN-45 - Support SchemaTool "createSchema" and "deleteSchema" options


  • NUCCORE-1112 - Make NucleusContext an interface, and have implementation(s) for the different contexts. Move static methods into a NucleusContextUtils

  • NUCCORE-1113 - Improve efficiency of identity lookups to find class name that it equates to

  • NUCCORE-1128 - Move store schema management operations to StoreSchemaHandler

  • NUCCORE-1141 - StoreManager "supportedOptions" should be standardised in core rather than just text strings

  • NUCCASSANDRA-17 - Make use of "persistable-identity" when storing relations to persistable objects

  • NUCCASSANDRA-27 - Provide PreparedStatement caching since Cassandra doesn’t

  • NUCEXCEL-69 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"

  • NUCEXCEL-71 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)

  • NUCJSON-43 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"

  • NUCHBASE-89 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)

  • NUCMONGODB-139 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"

  • NUCMONGODB-141 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)

  • NUCODF-50 - Use "persistable identity" for storing references to persistable objects instead of "id.toString()"

  • NUCODF-52 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)

  • NUCRDBMS-757 - getClassNameForObjectID should check on number of concrete candidates, and return if just 1

  • NUCRDBMS-759 - PostgreSQL : support detection of sequence existence using SELECT

  • NUCRDBMS-763 - Support NUCCORE-1128 (move schema management into StoreSchemaHandler)

  • NUCRDBMS-767 - OSGi manifest should also include new HSQLDB (v2.0+) driver import


  • NUCCORE-1109 - Extend SchemaAwareStoreManager to allow for create/delete of an actual schema (where supported)

  • NUCCORE-1110 - Drop deprecated MetaDataManager method

  • NUCCORE-1111 - Mark any class using "DatastoreUniqueOID" as not being L2 cacheable to avoid problems

  • NUCCORE-1114 - Change MetaDataManager to be interface, and have MetaDataManagerImpl as implementation, extended by JDO/JPA APIs

  • NUCCORE-1117 - Clean up MetaDataManager interface

  • NUCCORE-1118 - Rename StoreManager addClass, addClasses, removeAllClasses to better match their purpose

  • NUCCORE-1119 - Remove use of persistence property "datanucleus.metadata.validate" - as deprecated some time back

  • NUCCORE-1120 - NucleusContext should be responsible for loading up default properties appropriate to that context, not Configuration

  • NUCCORE-1122 - Rename "datanucleus.defaultInheritanceStrategy" to "datanucleus.metadata.defaultInheritanceStrategy"

  • NUCCORE-1123 - Change IndexMetaData/UniqueMetaData to not have child ColumnMetaData, just String column name

  • NUCCORE-1125 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)

  • NUCCORE-1127 - Refactor schema persistence properties to have standard naming "datanucleus.schema.XXX"

  • NUCCORE-1135 - Change JDOImplementationCreator to use current JRE as default rather than 1.3!

  • NUCCORE-1137 - Add autoCreateSchema to add database schema if it doesn’t exist (for datastores that support it)

  • NUCCORE-1139 - Add TypeConverter for BigDecimal-Double and BigInteger-Long for datastores that don’t gave high precision types

  • NUCCORE-1140 - Add TypeConverter for sql.Date-Date, sql.Time-Date, and sql.Timestamp-Date for datastores that only support java.util.Date

  • NUCAPIJDO-68 - Support NUCCORE-159

  • NUCAPIJDO-69 - Support NUCCORE-1112

  • NUCAPIJDO-70 - Support NUCCORE-1114

  • NUCAPIJDO-71 - JDO register process (class instantiation and JDOImplHelper) can register metadata but leave uninitialised

  • NUCJPA-264 - Default "datanucleus.allowAttachOfTransient" to true for JPA

  • NUCJPA-265 - Support NUCCORE-159

  • NUCJPA-266 - Support NUCCORE-1112

  • NUCJPA-267 - Support NUCCORE-1114

  • NUCREST-15 - Support NUCCORE-1112

  • NUCCASSANDRA-6 - Update AccessPlatform docs with Cassandra plugin info

  • NUCCASSANDRA-16 - Add log utility to show CQL statements with ? replaced by value

  • NUCCASSANDRA-20 - Support NUCCORE-1112

  • NUCCASSANDRA-22 - Support primitive wrappers

  • NUCCASSANDRA-26 - Support java.util.TimeZone

  • NUCEXCEL-68 - Support NUCCORE-1109

  • NUCEXCEL-70 - Support NUCCORE-1112

  • NUCJSON-44 - Support NUCCORE-1112

  • NUCHBASE-87 - Support NUCCORE-1109

  • NUCHBASE-88 - Support NUCCORE-1112

  • NUCLDAP-61 - Support NUCCORE-1112

  • NUCMONGODB-138 - Support NUCCORE-1109

  • NUCMONGODB-140 - Support NUCCORE-1112

  • NUCNEOFORJ-47 - Support NUCCORE-1112

  • NUCNEODATIS-29 - Support NUCCORE-1112

  • NUCODF-49 - Support NUCCORE-1109

  • NUCODF-51 - Support NUCCORE-1112

  • NUCRDBMS-753 - Support NUCCORE-1109

  • NUCRDBMS-754 - Remove deprecated JDBCUtils code

  • NUCRDBMS-755 - If DatastoreAdapter doesn’t support catalog/schema then don’t bother trying to find defaults from datastore connection

  • NUCRDBMS-756 - Support NUCCORE-1112

  • NUCRDBMS-761 - Move RDBMS plugin point schema definitions from "datanucleus-core" plugin.xml

  • NUCRDBMS-762 - NuoDB adapter updates

  • NUCXML-53 - Support NUCCORE-1112

  • NUCXML-54 - Add flexibility to ConnectionFactory to consider having different XSLT/DOM handlers

  • NUCSPATIAL-36 - Remove ESRI/ArcGIS and Linar/Jintegra code since was never really ready for release, no docs and no tests

  • NUCSPATIAL-37 - Drop OracleTypeInfo.SDO_GEOMETRY and move to geospatial

  • NUCSPATIAL-38 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)

  • NUCGUAVA-6 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)

  • NUCJODATIME-17 - Support NUCRDBMS-761 (rename to core/RDBMS plugin points)

  • NUCCACHE-38 - Support NUCCORE-1112


  • NUCCORE-1115 - TypeManager extraction of datastore type for a TypeConverter can fail when we are using an interface as the member type

  • NUCCORE-1134 - PrimaryKeyGenerator equals is incorrect in some situations

  • NUCCORE-1138 - L2 cache configuration not reset when getting ExecutionContext from pool

  • NUCRDBMS-758 - Wrong SQL generated for bulk fetch for queries with order by

  • NUCRDBMS-764 - Current handling of "datanucleus.connection.nontx.releaseAfterUse=false" is being applied to schema connections when shouldn’t

  • NUCRDBMS-765 - H2 DatastoreAdapter should have SEQUENCES as supported but doesn’t currently

  • NUCRDBMS-766 - ManagedConnection.getXAResource is always returning a new XAResource but should return the current resource

  • NUCRDBMS-768 - ResultClassROF because of generate field $jacocoData

  • NUCXML-55 - Setting the 'indent-number' attribute is incompatible with some external XSLT libraries.