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.
Feb 5th 2017 : Version 4.2.12 includes the following changes
datanucleus-core-169 - javax.cache can throw exceptions, so should catch and log all
datanucleus-api-jpa-62 - When in container mode, check on (JTA) transaction being active should include an attempt to join
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
Dec 10th 2016 : Version 4.2.11 includes the following changes
datanucleus-core-166 - Don’t throw exception on unsupported L2 cache pin/unpin methods
datanucleus-core-164 - Backport update to setting of default embedded flag when not previously set
datanucleus-rdbms-151 - Datanucleus uses "image" type for byte[] and Byte[] by default for SQL Server
datanucleus-core-163 - Storing embedded object in L2 cache when has no fields as such can give NPE
datanucleus-rdbms-146 - SQLServer : String.length should use LEN instead of CHAR_LENGTH
datanucleus-rdbms-149 - Datanucleus 4 renders concat operation wrong for SQL Server
datanucleus-rdbms-152 - SQL Server datetime functions "hour","minute","second" don’t work on date column
datanucleus-rdbms-153 - SQL Server should emulate null precedence
datanucleus-rdbms-157 - ForwardQueryResult is processed after full consumption with SQL Server
Nov 19th 2016 : Version 4.2.10 includes the following changes
datanucleus-core-154 - Add check on use of recursive embedded fields and throw exception
datanucleus-core-148 - Support generic compilation of parameters in ORDER BY clause
datanucleus-api-jpa-54 - SingularAttribute.getBindableType for embedded object
datanucleus-api-jpa-50 - Support DN javax.persistence Criteria "nulls first"/"nulls last" API
datanucleus-rdbms-126 - Override handling for datastore-attributed column is incorrect, doesn’t apply value strategy (backport of 125)
datanucleus-core-151 - Backport of AbstractNamingFactory handling fixes for embedded
datanucleus-core-140 - Types of generic MappedSuperClass fail to resolve (backport of 138)
Sep 20th 2016 : Version 4.2.9 includes the following changes
datanucleus-core-125 - JPQL : Support TREAT in JOIN clause (Backport of 117)
datanucleus-core-127 - Support subqueries in FROM clause
datanucleus-api-jpa-43 - Support override of Map embedded value fields
datanucleus-rdbms-108 - SQLServer : OFFSET is only appropriate if ORDER BY is used in SQLServer 2012+
datanucleus-rdbms-109 - Backport several commits about COMPLETE-TABLE from master
datanucleus-rdbms-113 - Support use of JPQL TYPE (JDOQL instanceof) with a type converted comparison value
datanucleus-rdbms-114 - Support JPQL JOIN to a TREAT (CAST) expression, backport of 100
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
Aug 25th 2016 : Version 4.2.8 includes the following changes
datanucleus-core-114 - Ignore bridge getter/setter methods when processing annotations
datanucleus-core-115 - Enhancer : Don’t enhance "bridge" methods
datanucleus-core-118 - JPQLParser TREAT handling is not flexible enough for all combinations
datanucleus-core-120 - JPQL - Support subqueries in update statements
datanucleus-rdbms-92 - Add check on table type before running callbacks
datanucleus-rdbms-96 - Allow use of subqueries in JPQL UPDATE clause
datanucleus-rdbms-98 - Support JPQL query of ElementCollection of embeddable elements
datanucleus-api-jdo-27 - JDOQLTypedQuery.close can result in NullPointerException when FetchPlan not set
datanucleus-api-jdo-29 - JDOPersistenceManagerFactory.getPersistenceManagerFactory(Properties) has inconsistent creation
datanucleus-api-jpa-33 - When @Column is specified on Collection<NonPC>/Map<?,NonPC> field it only uses name
datanucleus-api-jpa-37 - Invalid persistentAttributeType returned for embeddable property
datanucleus-api-jpa-38 - Static metamodel generator generates null for byte[] propertie
datanucleus-api-jpa-40 - IdentifiableTypeImpl.getSupertype add null check
datanucleus-rdbms-88 - JPQL with subquery using candidate collection via join table fails
Aug 2nd 2016 : Version 4.2.7 includes the following changes
datanucleus-api-jdo-25 - JDOPersistenceManager.close should null the pmf
datanucleus-api-jpa-31 - Null out some variables on close of EM, and assert when EM closed on all query methods
datanucleus-rdbms-81 - Cater for PostgreSQL specific default value :: syntax
datanucleus-rdbms-82 - ClassAdder mixes table validation with column initialisation. Should be separate
datanucleus-rdbms-84 - Allow control over whether to use column default values when a value is null
datanucleus-core-105 - Fix code typo in ExecutionContextImpl.getManagedObjects
datanucleus-api-jpa-28 - Fix IdentifiableType.getId when using generics
datanucleus-api-jpa-29 - Fix IdentifiableType.getVersion when using subtype
Jun 6th 2016 : Version 4.2.6 includes the following changes
datanucleus-core-73 - CompleteClassTable : cater for columnMetaData on collection element when intended for field
datanucleus-core-70 - Federation : cater for simple use-cases of identity
datanucleus-rdbms-44 - jdbc timeouts are not propagated for SQL queries
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
Apr 7th 2016 : Version 4.2.5 includes the following changes
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
Feb 20th 2016 : Version 4.2.4 includes the following changes
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
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
Nov 27th 2015 : Version 4.2.2 includes the following changes
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
Nov 6th 2015 : Version 4.2.1 includes the following changes
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
Oct 9th 2015 : Version 4.2 RELEASE includes the following changes
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
Sept 15th 2015 : Version 4.2 Milestone 3 includes the following changes
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!
Aug 16th 2015 : Version 4.2 Milestone 2 includes the following changes
NUCCORE-1335 - Add ability to set JDOQL/JPQL strictness on query compilation
NUCCORE-1336 - JPQL : support CURRENT_TIMESTAMP(), CURRENT_DATE(), CURRENT_TIME()
NUCCORE-1337 - JPQL : support COUNT(*)
NUCAPIJDO-101 - Add support for JDOQLTypedQuery NumericExpression.neg()
NUCAPIJDO-102 - Add support for JDOQLTypedQuery NumericExpression.com()
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
Jul 14th 2015 : Version 4.2 Milestone 1 includes the following changes
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 xmlns.jcp.org 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