The 4.1 release of AccessPlatform is available under the Apache 2 license from our download page
Version 4.1 includes the following over 4.0
Rewrite SCO "update" initialisation to cater for cascade delete and optimisation.
Extend 'operation queue' to include persist, update, remove operations
Minor upgrade to bytecode enhancement contract to allow for separation of enhancement API
Rewrite of handling of container field update code.
Types : support for Jodatime LocalDateTime
JDO : PersistenceManager and Query implementations now implement AutoCloseable
JDO : Ability to save a query as a "named" query, for later access
JDO : support for JDOQL subqueries in SELECT clause
JPA : support for non-standard value generators
JPA : support for "KEY", "VALUE" keywords in JPQL
JPA : support for parameters in FROM "ON" clause of JPQL
JPA : support for JPQL subqueries in SELECT and HAVING clauses
JPA : support for JPQL ordering by result alias
JPA : support for JPQL "RIGHT OUTER JOIN"
JPA : support for AttributeConverters on map key/value and collection element
JPA : Ability to save a query as a "named" query, for later access
REST : support for map/array fields
REST : support for maxFetchDepth on GET requests
REST : support for GZIP compression on GET requests
MongoDB : much improved relation handling, and support for date and interface fields.
RDBMS : support for some HikariCP connection pool properties
RDBMS : support for SQL Anywhere
Persistent Properties : you can now use inheritance in persistent properties, overriding getters etc
No further releases planned; commercial enquiries required.
Feb 5th 2017 : Version 4.1.17 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.1.16 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.1.15 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.1.14 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.1.13 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-29 - JDOPersistenceManagerFactory.getPersistenceManagerFactory(Properties) has inconsistent creation
datanucleus-api-jdo-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.1.12 includes the following changes
datanucleus-api-jdo-24 - 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.1.11 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-15 - 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.1.10 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.1.9 includes the following changes
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
NUCRDBMS-1009 - Parameters in group by expressions are not set on the JDBC statement
Jan 13th 2016 : Version 4.1.8 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.1.7 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 16th 2015 : Version 4.1.6 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
NUCRDBMS-974 - Oracle, Firebird require that when using GROUP BY, all non-aggregate SELECT components are in the GROUP BY clause
Oct 18th 2015 : Version 4.1.5 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(…)
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.1.4 includes the following changes
NUCCORE-1344 - JPQL Compilation : support limited polymorphic join
NUCRDBMS-932 - Support polymorphic joins for entities
NUCRDBMS-939 - Support parameters in SELECT clause, particularly when as part of subqueries
NUCRDBMS-935 - SQLStatement : change handling of selects to retain SQLText until statement generation
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
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
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.1.3 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(*)
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
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.1.2 includes the following changes
NUCCORE-1325 - Support Java generic TypeVariable where declared by class generic type bounds
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
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
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
Jun 13th 2015 : Version 4.1.1 includes the following changes
NUCCORE-1322 - If user calls setXXX for a container field to replace the delegate container then we should swap the value being managed.
NUCGUAVA-10 - Support NUCCORE-1322
NUCRDBMS-898 - Support passing required JoinType to nested fetches, so when one object is fetched LEFT OUTER then subobjects can be also
NUCCORE-1316 - StateManagerImpl.setIdentity has a block of code that seemingly is not needed
NUCJPA-309 - Code for processing AttributeConverters is dotted through code. Move to convenience location
NUCRDBMS-897 - Support "log" function on Postgresql via "LN" rather than "LOG"
NUCCORE-1315 - Persistable class with own writeObject() method should be enhanced to have a call to dnPreSerialize before the user code
NUCCORE-1317 - literal timestamp parsing bug in JPQLParser.java resulting with "'…' expected in JDBC escape syntax" exception
NUCCORE-1320 - persistence.xml "exclude-unlisted-classes" tag default value is incorrect
NUCJPA-310 - error with entityManager.lock(…, LockModeType.OPTIMISTIC)
NUCJPA-311 - error in JPAEntityManager.find(Class, Object, LockModeType)
NUCJPA-312 - When converting Criteria query with Timestamp literal into JPQL string form, it omits the nanosecs part
May 19th 2015 : Version 4.1 RELEASE includes the following changes
NUCCORE-1308 - Support Java generic TypeVariable in 1-1/N-1 relations
NUCCORE-1309 - Support Java generic TypeVariable in 1-N/M-N relations
NUCCORE-1312 - Support JPQL with RIGHT OUTER JOIN
NUCRDBMS-892 - Support JPQL with RIGHT OUTER JOIN
NUCCORE-1313 - Support JPQL FROM "ON" clauses that are other than DyadicExpression
NUCCORE-1314 - If annotation specified on field and method then take as field and use method annotations as if on field
NUCJPA-307 - Criteria API usage currently requires something to be selected (using select/multiSelect) whereas could default to candidate
NUCRDBMS-894 - Query of Collection.contains where the element is of an invalid type should create query with 1=0 rather than throw exception
NUCRDBMS-895 - Support JPQL "COALESCE"/"NULLIF" with non-numeric arguments
NUCAPIJDO-91 - Support typesafe query StringExpression.add(…)
NUCJPA-306 - Change "datanucleus.rdbms.allowColumnReuse" default to "true" for JPA usage
NUCRDBMS-890 - JPQL : Support use of MEMBER OF on Map (and interpret as "Map.containsValue")
NUCRDBMS-891 - Support query joins that join to EmbeddedId to provide access to the fields
NUCRDBMS-896 - JDOQL : support CharacterLiteral.toUpperCase/toLowerCase methods
NUCCORE-1311 - JPQL "[NOT] IN" not compiled correctly when we have parameter yet value type not yet known
NUCJPA-308 - CriteriaBuilder.in always tries to create "(val == collVal1 || val == collVal2 || …) but should use IN if single value specified to allow for Collection parameter
NUCRDBMS-893 - FROM joins should process first part of the join expression and take the table for that as one side of the join
May 1st 2015 : Version 4.1 Milestone 4 includes the following changes
NUCCORE-1292 - Allow subquery in SELECT clause (JDOQL/JPQL)
NUCJPA-304 - Support @Convert with attributeName of "key" or "value" to apply to the key or value of a Map field
NUCJPA-305 - Support @Convert when specified on Collection to convert the element
NUCRDBMS-17 - Classes with collection/map fields should be allowed to have "subclass-table" inheritance strategy, and the elements/keys/values should be allowed to have "subclass-table"
NUCRDBMS-18 - 1-1 undirectional relation needs the flexibility of allowing "subclass-table" at the other end
NUCRDBMS-19 - Support for 1-N bidir relation between impl of interface with collection of elements
NUCRDBMS-719 - Provide the ability to override a builtin method mapping
NUCRDBMS-882 - Support for DEGREES/RADIANS functions and JDOQL Math.toDegrees/Math.toRadians
NUCCORE-1300 - Call to PM.refreshObject/retrieveObject/evictObject gives unclear exception message when transient object passed
NUCCORE-1306 - TypeManager should use ConcurrentHashMap since multithreaded
NUCAPIJDO-89 - Allow PM.getFetchGroup/PMF.getFetchGroup to include members of existing named/static query when available
NUCRDBMS-878 - Query attempting to select a 1-1/N-1 field which uses subclass-table (hence no FK) throws exception on form of statement but should just select FK only
NUCRDBMS-884 - When a JDBC driver provides multiple sql-type for a jdbc-type should be possible to have default matching plugin.xml
NUCSPATIAL-54 - Support NUCRDBMS-884
NUCCORE-1293 - Prevent SCOOperation’s being added to OperationQueue when owner object is not yet flushed to datastore
NUCCORE-1294 - ManagedRelations : backed Set wrappers initialise(Collection, Collection) register changes twice
NUCCORE-1296 - In-memory evaluation of assorted Math.xxx functions
NUCCORE-1298 - Move "implementation-classes" handling to be with CollectionMetaData, MapMetaData etc
NUCCORE-1301 - Metadata load often resulted in attempt to find metadata for single-field identity classes when obviously not persistent
NUCCORE-1302 - Clean up ExecutionContext.close to merge methods only used once, so we improve logging
NUCAPIJDO-90 - Change JDOAdapter.isXXX to use Persistable direct rather than routing through JDOHelper.isXXX and then through JDOImplHelper.nonBinaryCompatibleIs
NUCJPA-302 - Support query hints on @NamedQuery, @NamedNativeQuery etc
NUCRDBMS-877 - 1-N FK Set of interface object doesn’t allow update of FK reliably
NUCRDBMS-883 - JPQL should allow ORDER BY using result alias
NUCCORE-1295 - Generic compiler can fail to correctly detect class names in PrimaryExpression and result in invalid compilation
NUCCORE-1299 - Make sure that close of ExecutionContext completes, checking for null objects
NUCCORE-1303 - Joining over map value not working when wanting to chain the join to sub-objects of the value
NUCCORE-1304 - Generic compile of filter "field NOT IN (:param)" doesn’t include the NOT in the resultant compile
NUCCORE-1305 - Generic compile of filter something like "field.method().field.method()" is not compiled correctly
NUCCORE-1307 - List wrapper SCOs have error in initialise method when updating (setXXXField); should log with operation queue in more situations
NUCJPA-303 - Metamodel returns ONE_TO_ONE instead of MANY_TO_ONE
NUCRDBMS-876 - When we try to fetch a N-1 "owner" field (with join table) where the owner has an interface, it doesn’t get the implementation and fails
NUCRDBMS-879 - Backing store of Collection with multiple root elements doesn’t give correct info for size()
NUCRDBMS-880 - When storing java.sql.Timestamp as String it calls ps.setObject(Timestamp) and relies on JDBC driver
NUCRDBMS-881 - RuntimeException caused by readl lock during preDelete is ignored
NUCRDBMS-885 - Selecting a map value not working when the value has a Map field in it
Apr 4th 2015 : Version 4.1 Milestone 3 includes the following changes
NUCCORE-1282 - Allow a query to be registered as a named query
NUCCORE-1290 - Support JPQL "Simple CASE expression"
NUCAPIJDO-85 - Ability to save a (created) query as a named query for later use
NUCJPA-295 - Allow a query to be registered as a named query
NUCJPA-301 - Implement CriteriaBuilder "selectSimpleCase"
NUCREST-19 - Support persistence of Maps - see JSON plugin
NUCREST-20 - Support persistence of array fields
NUCREST-23 - Support GZIP encoding on GET response
NUCRDBMS-866 - Support JPQL KEY, VALUE
NUCRDBMS-873 - Support specification of type-converter-name on <element>, <key>, <value>
NUCAPIJDO-86 - Make PersistenceManager support AutoCloseable (Java7+)
NUCAPIJDO-87 - Make JDOQuery implement AutoCloseable
NUCREST-17 - Allow specification of maxFetchDepth on GET requests
NUCRDBMS-871 - Select of KEY or VALUE only selects the "id" of the key/value class currently, but should select the FetchPlan
NUCRDBMS-872 - JPQL : Support for parameters in FROM "ON" clause
NUCRDBMS-874 - Upgrade to HikariCP 2.3.5 and add some properties
NUCCORE-1284 - Move AbstractSQLQuery across to RDBMS plugin since no other datastore supports "SQL" in the same way
NUCCORE-1287 - Enhancement of persistent properties (getter/setter) does not cope with subclasses overriding getter/setter (and generic type of collection)
NUCCORE-1289 - Support parsing of JPQL "KEY(myMap).field" (ditto VALUE)
NUCCORE-1291 - Support compilation of JPQL queries with HAVING containing subquery
NUCJPA-299 - PluralAttributeImpl.getElementType returns null for a Map, but should return something
NUCJPA-300 - Implement CriteriaBuilder "selectCase" methods
NUCREST-21 - Should not need to specify "class" in related object when sending PUT/POST
NUCRDBMS-862 - Move AbstractSQLQuery across to RDBMS plugin since no other datastore supports "SQL" in the same way
NUCRDBMS-864 - Support persisting a java.util.Calendar as jdbc-type="DATE"
NUCRDBMS-865 - Support persisting a java.util.Calendar as jdbc-type="TIME"
NUCRDBMS-870 - Consider upgrading cascade handling to process the forming of relations if elements/keys/values are present but no cascade set
NUCCORE-1286 - Check for setter of a persistent property doesn’t allow for it being in superclass
NUCCORE-1288 - Annotations for persistent properties are sometimes not processed leading to handling as persistable field
NUCJPA-284 - DataNucleus org.datanucleus.api.jpa.criteria.FromImpl.java class has a bug and hence a slightly complex two-level embedded query failed
NUCJPA-296 - Use of EntityGraph with multiple levels only respects top level, subgraphs are stored with null fetchGroupName and discarded
NUCREST-16 - GET using "id" and specified fetchGroup doesn’t necessarily respect fetchGroup on return
NUCJODATIME-22 - Difference in persistence of LocalDate when persisting to DATE column from 3.2
NUCRDBMS-861 - Query using FetchPlan, and with maxFetchDepth set to != 1 will always just pull in candidate and next level
NUCRDBMS-867 - Error in JDOQL Map.get handling for key stored in value table or value stored in key table cases
NUCRDBMS-869 - NPE when using on condition with KEY
NUCRDBMS-875 - UUIDMapping can NPE on initialize if creating as reference to a "pk" UUIDMapping
Mar 9th 2015 : Version 4.1 Milestone 2 includes the following changes
NUCCORE-1275 - Add method DataNucleusEnhancer.addPersistenceUnit(PersistenceUnitMetaData) for dynamically created persistence units
NUCJPA-290 - Provide access to other value generators not in scope of JPA spec
NUCCORE-1278 - Persistence property "datanucleus.findObject.typeConversion" should be overrideable on PM/EM basis
NUCCORE-1279 - Support specification of "comparator-name" via extensions on the field rather than just on collection metadata
NUCCORE-1280 - Move all class/member level metadata extensions to "public static final String" fields in org.datanucleus.metadata.MetaData
NUCAPIJDO-84 - Make use of ConcurrentHashMap for pm cache now that we support Java7+ only
NUCJPA-293 - Make use of ConcurrentHashMap for persistence unit metadata now that we support Java7+ only
NUCMONGODB-153 - Support query of 1-1/N-1 reference compared to relation object
NUCMONGODB-158 - Cater for query structure like "field == param" or "field == literal" and the field uses a TypeConverter
NUCMONGODB-160 - java.sql.Time, java.sql.Date are being stored as String when could use "date" Mongo type
NUCMONGODB-161 - Support retrieval of interface fields
NUCRDBMS-852 - Support query fetch of Collection/Map/Array fields when serialised (i,e stored in single column of owner table).
NUCRDBMS-858 - Support NUCCORE-1280
NUCJODATIME-14 - Extend Joda time support for LocalDateTime
NUCCORE-1271 - Drop targetClass from org.datanucleus.identity.SingleFieldId since duplicates targetClassName
NUCCORE-1272 - Rename options for "datanucleus.valuegeneration.transactionAttribute" to be NEW and EXISTING
NUCCORE-1274 - Support CASE / IF/ELSE "when" conditions that are not completely defined (i.e depend on previous when conditions)
NUCCORE-1276 - Remove refs to javax.jdo properties/methods
NUCCORE-1281 - Provide handling for Enum "value getter method" so it can be used by all store plugins (currently in RDBMS only)
NUCAPIJDO-82 - Implement Java7 JDOConnectionJDBCImpl methods since using Java7+ now
NUCAPIJDO-83 - Support NUCCORE-1271
NUCJPA-291 - Allow direct access to java.sql.Connection via EM.unwrap when using RDBMS
NUCJPA-292 - Remove use of javax.jdo.option.transactiontype : only need internal DataNucleus property with JPA
NUCJPA-294 - Implement Criteria FetchImpl.fetch methods so we can chain fetches
NUCRDBMS-850 - Change "datanucleus.multivaluedFetch" to be RDBMS specific and specifiable globally
NUCRDBMS-851 - Add check on CASE "action" expression types for consistency
NUCRDBMS-853 - HikariCP : Make leakThreshold, maxLifetime configurable
NUCRDBMS-854 - Support NUCCORE-1274
NUCRDBMS-855 - Drop support for "adapter-column-name" for overriding join table order column name. Just use <order>
NUCRDBMS-860 - Push Enum "value getter method" handling down into datanucleus-core so we can make it available for other store plugins
NUCCORE-1277 - DeleteFieldManager "nullBidirIfNotDependent" handling incomplete when dealing with N-1 relationships
NUCEXCEL-80 - Make sure StoreData is populated before using fetchObject(…)
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
NUCEXCEL-85 - Classes without table (abstract) can cause NPE if you try to do query over them
NUCEXCEL-86 - Fetch of relation fields doesn’t cater for the related object being deleted elsewhere. Copy Cassandra plugin handling
NUCODF-60 - Make sure StoreData is populated before using fetchObject(…)
NUCODF-61 - StoreEmbeddedFieldManager has incorrect logic in detection of embedded sub field
NUCODF-62 - Classes without table (abstract) can cause NPE if you try to do query over them
NUCODF-63 - Fetch of relation fields doesn’t cater for the related object being deleted elsewhere. Copy Cassandra plugin handling
NUCMONGODB-154 - MongoUtils.getClassNameForIdentity should use StoreManager to get subclasses so they get registered
NUCMONGODB-156 - Persisting array of char, byte etc can fail on retrieval since stored as List<String>
NUCMONGODB-157 - Query of class with field using multiple-column TypeConverter only selects the first column
NUCMONGODB-163 - Creattion of index/unique is incorrect. Should set name if not set, and should use class name in generated name
NUCJSON-54 - Classes without table (abstract) can cause NPE if you try to do query over them
NUCJSON-55 - Fetch of relation fields doesn’t cater for the related object being deleted elsewhere. Copy Cassandra plugin handling
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
NUCRDBMS-857 - Typo from NUCRDBMS-838
Jan 19th 2015 : Version 4.1 Milestone 1 includes the following changes
NUCRDBMS-253 - DB2 : SerializeRead/useUpdateLock "for update" shouldn’t have been appended to all selects
NUCCORE-1269 - Map wrapper SCOs have inefficient initialise method when updating (setXXXField). Create efficient logic for working out changed elements
NUCCORE-1270 - Add ExecutionContext.getLevel1Cache for symmetry with NucleusContext and Level2Cache
NUCAPIJDO-81 - JDO class load listener : catch any exceptions loading the class and log rather than rethrowing
NUCRDBMS-845 - Handling of case expression should check for non-Boolean conditional expression, and convert to CaseNumericExpression if possible
NUCCORE-1229 - Add ExecutionContextReference interface, and use it in bytecode enhancement contract
NUCCORE-1238 - Set of container field of a persistable doesn’t make use of the old value when updating the field; should use the old value to decide what to do
NUCCORE-1260 - Standard collection/map wrappers remove() does cascade delete direct, yet should check if queued operations
NUCCORE-1263 - Add OperationQueue operations for persists, removes and updates
NUCCORE-1265 - Move StateManagerImpl.getEmbeddedOwners to ExecutionContext
NUCCORE-1266 - Separate embedded owner field setting code from StateManagerImpl.wrapSCOField
NUCCORE-1267 - SCOCollection/SCOMap updateEmbeddedXXX should take in makeDirty flag
NUCRDBMS-844 - JDOQL/JPQL : Allow "expr = {param}" to have flexibility when the param is null so that can map to "IS NULL" or "= null"
NUCRDBMS-846 - Support boolean Case expressions (just like we do numeric Case expressions)
NUCCORE-1264 - Loss of all collection elements on add+remove when playing around with SCO wrapper of an object that was subsequently made HOLLOW
NUCRDBMS-843 - MapMapping.postUpdate when setting to null doesn’t clear the backing store but should
NUCRDBMS-847 - JDOQL statement with multi-tenant PersistenceManager