DataNucleus Changelog

What's new in DataNucleus 4.2.3

Jan 14, 2016
  • Improvement:
  • [NUCRDBMS-991] - Support for fetch of ReferenceMapping field when there is a single implementation and using FK
  • Bug:
  • [NUCCORE-1366] - AbstractMemberMetaData.getClassName(false) can return fully qualified name in some situations
  • [NUCJPA-329] - JPA MetaModel doesn't cater correctly for List, 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

New in DataNucleus 4.2.2 (Jan 12, 2016)

  • New Feature:
  • [NUCCORE-1358] - Allow JPQL to exclude subclasses of the candidate
  • [NUCRDBMS-983] - Support SAP "SQLAnywhere"
  • Improvement:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.2.1 (Jan 12, 2016)

  • New Feature:
  • [NUCRDBMS-970] - SQLStatement needs a way of generation where we don't use table aliases, and just use table names
  • [NUCRDBMS-977] - Support persisting a Collection/Map using a TypeConverter for the whole field
  • Improvement:
  • [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!)
  • Task:
  • [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.
  • Bug:
  • [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

New in DataNucleus 4.2.0 (Jan 12, 2016)

  • New Feature:
  • [NUCCORE-1350] - Extend NUCCORE-1344 to allow LEFT JOIN FETCH
  • [NUCRDBMS-944] - Support polymorphic joins when using UNION, so only apply to particular UNIONs
  • [NUCRDBMS-954] - MySQL : allow setting the COLLATION and CHARACTER SET of any tables that are created
  • [NUCRDBMS-958] - Firebird supports date functions using EXTRACT(...)
  • [NUCJDOQUERY-21] - Support persistable classes that are static inline
  • Improvement:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.1.7 (Jan 12, 2016)

  • New Feature:
  • [NUCCORE-1358] - Allow JPQL to exclude subclasses of the candidate
  • [NUCRDBMS-983] - Support SAP "SQLAnywhere"
  • Improvement:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.1.6 (Jan 12, 2016)

  • New Feature:
  • [NUCRDBMS-970] - SQLStatement needs a way of generation where we don't use table aliases, and just use table names
  • [NUCRDBMS-977] - Support persisting a Collection/Map using a TypeConverter for the whole field
  • Improvement:
  • [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!)
  • Task:
  • [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.
  • Bug:
  • [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

New in DataNucleus 4.1.5 (Jan 12, 2016)

  • New Feature:
  • [NUCCORE-1350] - Extend NUCCORE-1344 to allow LEFT JOIN FETCH
  • [NUCRDBMS-944] - Support polymorphic joins when using UNION, so only apply to particular UNIONs
  • [NUCRDBMS-954] - MySQL : allow setting the COLLATION and CHARACTER SET of any tables that are created
  • [NUCRDBMS-958] - Firebird supports date functions using EXTRACT(...)
  • Improvement:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.1.4 (Jan 12, 2016)

  • New Feature:
  • [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
  • Improvement:
  • [NUCRDBMS-935] - SQLStatement : change handling of selects to retain SQLText until statement generation
  • Task:
  • [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
  • Bug:
  • [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!

New in DataNucleus 4.1.3 (Jan 12, 2016)

  • New Feature:
  • [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
  • Improvement:
  • [NUCRDBMS-922] - Handle compilation of "interfaceField == :param"
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.1.2 (Jan 12, 2016)

  • New Feature:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.1.1 (Jun 15, 2015)

  • Improvement:
  • [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
  • Task:
  • [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"
  • Bug:
  • [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

New in DataNucleus 4.1.0 (May 19, 2015)

  • DataNucleus AccessPlatform 4.1 includes the following features relative to version 4.0:
  • 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 RIGHT OUTER JOIN in FROM clause of JPQL
  • JPA : support for JPQL subqueries in SELECT and HAVING clauses
  • JPA : support for JPQL ordering by result alias
  • 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
  • Persistent Properties : you can now use inheritance in persistent properties, overriding getters etc
  • NEW FEATURE:
  • [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
  • IMPROVEMENT:
  • [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
  • TASK:
  • [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
  • BUG:
  • [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

New in DataNucleus 4.1.0 M4 (May 1, 2015)

  • NEW FEATURE:
  • [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
  • IMPROVEMENT:
  • [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
  • TASK:
  • [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
  • BUG:
  • [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

New in DataNucleus 4.1.0 M3 (Apr 4, 2015)

  • NEW FEATURE:
  • [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 , ,
  • IMPROVEMENT:
  • [NUCAPIJDO-86] - Make PersistenceManager support AutoCloseable (JDK1.7+)
  • [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
  • TASK:
  • [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
  • BUG:
  • [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

New in DataNucleus 4.1.0 M2 (Mar 9, 2015)

  • NEW FEATURE:
  • [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
  • IMPROVEMENT:
  • [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 JDK1.7+ only
  • [NUCJPA-293] - Make use of ConcurrentHashMap for persistence unit metadata now that we support JDK1.7+ 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
  • TASK:
  • [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 JDK1.7 JDOConnectionJDBCImpl methods since using JDK1.7+ 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
  • [NUCRDBMS-860] - Push Enum "value getter method" handling down into datanucleus-core so we can make it available for other store plugins
  • BUG:
  • [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
  • [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

New in DataNucleus 4.0.6 (Mar 2, 2015)

  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.0.5 (Feb 2, 2015)

  • Improvement:
  • [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).
  • Task:
  • [NUCRDBMS-851] - Add check on CASE "action" expression types for consistency
  • Bug:
  • [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

New in DataNucleus 4.1.0 M1 (Jan 19, 2015)

  • NEW FEATURE:
  • [NUCRDBMS-253] - DB2 : SerializeRead/useUpdateLock "for update" shouldn't have been appended to all selects
  • IMPROVEMENT:
  • [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
  • TASK:
  • [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)
  • BUG:
  • [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

New in DataNucleus 4.0.4 (Nov 15, 2014)

  • New Feature:
  • [NUCLDAP-63] - Add ability to specify "mapping-strategy" for a field without relying on random "join" information
  • Improvement:
  • [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
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.0.3 (Oct 1, 2014)

  • 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
  • Improvement:
  • [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.
  • Task:
  • [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
  • Bug:
  • [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

New in DataNucleus 4.0.2 (Aug 29, 2014)

  • New Feature:
  • [NUCRDBMS-814] - Support maxActive on DBCP2 connection pool
  • Improvement:
  • [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 org.datanucleus.store.rdbms.datasource.DriverManagerDataSource to inner class of DefaultConnectionPoolFactory
  • Task:
  • [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
  • Bug
  • [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 org.datanucleus.store.rdbms.mapping.datastore.BigIntRDBMSMapping
  • [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

New in DataNucleus 3.3.6 (Jan 3, 2014)

  • Auto-generate MANIFEST.MF OSGi information using Maven bundle plugin
  • Change use of StringBuffer to StringBuilder for efficiency
  • Add fix to enhancement contract for JDK1.7+ for getter when using persistence properties
  • Add support for in-memory query evaluation of String.concat
  • Provide fallback API for runtime enhancement
  • Add metadata checks for some common primary-key specification errors
  • Support persistence of StringBuilder fields
  • JPA : Fix Criteria FromImpl getJoins/getFetches to return empty set when null
  • XML : restructured to allow potential of using different JAXB implementations internally
  • XML : add support for XML indentation formatting
  • Cache : upgraded Coherence support to 3.6+
  • RDBMS : support added for query range in datastore for Derby, SQLServer 2012, Firebird
  • RDBMS : support added for sequences with SQLServer 2012
  • RDBMS : support added for M-N relations using ordered lists
  • RDBMS : fixes to schema creation for M-N relations
  • RDBMS : support added for parameters with bulk-fetch feature
  • RDBMS : bulk-fetch support added for array fields
  • RDBMS : add ability to turn off bulk-fetch on a per-query basis
  • Geospatial : new plugin comprising merged spatial/awtgeom plugins
  • Geospatial : added some missing PostGIS methods and validated against latest PostGIS JDBC driver
  • MongoDB : improved handling of ordering/range parts of query to correct previous contribution
  • MongoDB : upgrade to use latest java driver
  • HBase : fix problem with retrieval of Enum stored as numeric (ordinal)
  • Various other bug fixes and minor improvements

New in DataNucleus 3.3.5 (Dec 14, 2013)

  • Wrap any exception thrown from JDOHelper.getObjectId so that it meets the JDO spec
  • Fix to class loading for property validators for OSGi
  • Couple of fixes for optimistic relationship management
  • JDO : Change PMF to be Serializable
  • JPA : Change EMF and CriteriaQuery to be Serializable
  • JPA : Fix criteria CONCAT support to give correct JPQL string form
  • JPA : Add support for IN with criteria queries via CriteriaBuilder
  • JPA : Add support for JPQL "TREAT" in WHERE clause
  • RDBMS : Add support for bulk fetch of multi-valued collection fields of a candidate when in FetchPlan of a query (removes "1+N" problem)
  • RDBMS : Add support for SQLServer to handle JDOQL String.substring with 2 args (Daniel Dai)
  • RDBMS : Add support for JDOQL String.concat (Daniel Dai)
  • RDBMS : Fix to detection of type of backing store required for a collection, using metadata more
  • MongoDB : Add support for specifying the MongoOptions when creating the first connection (Robin Zhang)
  • Spatial : Fix some missing PostGIS methods
  • Various other bug fixes and minor improvements

New in DataNucleus 3.3.4 (Nov 20, 2013)

  • Metadata : Add level of locking to metadata load process to assist in multithreaded environments
  • Metadata : fix bug in OrderMetadata for multithreaded environments
  • Fix to some potential startup problems with ExecutionContext/ObjectProvider in multithreaded environments
  • Change "datanucleus.SerializeRead", "datanucleus.cache.collections", "datanucleus.deletionPolicy", "datanucleus.query.jdoql.allowAll", "datanucleus.query.sql.allowAll" to be overrideable on the PM/EM
  • Cache : update javax.cache support to "1.0-PFD" standard
  • JPA : Fix to metamodel Attribute.isOptional to return false for PK fields
  • RDBMS : Fix to persistence of bidirectional 1-N with Set
  • RDBMS : Change backing stores to be one per field and be thread-safe
  • RDBMS : Support for more boolean expressions in result clause for JDOQL/JPQL
  • RDBMS : Support for persisting a field serialised into a local file
  • RDBMS : Support for persisting a File type field streamed to/from datastore
  • RDBMS : Upgrade "datasource" plugin point to be "connectionpool", adding more capabilities
  • Neo4j : support for persistence of map fields (Map, Map)
  • Neo4j : support for using embedded database with user-provided configuration properties
  • Neo4j : support for access to underlying Cypher query for a JDOQL/JPQL query
  • MongoDB : support for query evaluation of several String methods in-datastore (Marcin Jurkowski)
  • MongoDB : support for query evaluation of Collection.contains in-datastore (Marcin Jurkowski)
  • MongoDB : fix to retrieval of class version field (Marcin Jurkowski)
  • MongoDB : support for query literals of type Character
  • Various other bug fixes and minor improvements

New in DataNucleus 3.3.3 (Oct 24, 2013)

  • JPA : fix to metamodel SimpleAttributeImpl.isVersion (Adrian Ber)
  • JPA : add support for multi-field join syntax in JPQL FROM clause
  • JPA : update to handling of JPQL range when just first result set
  • JPA : support inherited TypeConverters (Adrian Ber)
  • JPA : pass properties from EMF to ClassTransformer when run in managed mode
  • RDBMS : fix for SQLServer schema name problem (Shanyu Zhao)
  • RDBMS : add support for using FetchPlan when querying over "complete-table" candidate (previous just retrieved primary key)
  • RDBMS : improvement in process to determine class name when no subclasses known about, to avoid SQL
  • RDBMS : support for persisting Double type into SQLServer FLOAT datastore type (Shuaishai Nie)
  • JSON : fix to retrieval of objects in query so that application-identity cases have id assigned
  • MongoDB : add support for query ordering being processed in the datastore (Marcin Jurkowski))
  • Rename "google-collections" plugin to "guava"
  • JDO : distribute jdo-api 3.1-rc1
  • Various other bug fixes and minor improvements

New in DataNucleus 3.3.2 (Sep 3, 2013)

  • L2 Cache : store class name of "id" of object to avoid some inheritance lookups
  • L2 Cache : allow configurable "update" mode
  • L2 Cache : cache copies of Date, Calendar when caching fields of those types
  • Update javax.cache support to v0.9
  • Add fallback method for getting types of a TypeConverter
  • Improvement to lookup of an object using class name from the identity where possible
  • Key FetchPlan for a class by the class name rather than by its metadata
  • JPA : fix support for Criteria function() method
  • RDBMS : support for querying ==/!= of String parameters
  • RDBMS : support query select of fetch plan fields of related N-1 FK field
  • RDBMS : support detection of discriminator in SQL query
  • HBase : improvement for primitive wrapper field types
  • Various other bug fixes and minor improvements

New in DataNucleus 3.3.1 (Aug 1, 2013)

  • JPA : support for JPA2.1 FROM "ON" clauses in string-based and Criteria queries
  • JPA : support for JPA2.1 UPDATE/DELETE Criteria queries
  • JPA : support for JPA2.1 ForeignKey, and Index
  • JPA : support for JPA2.1 JPQL "FUNCTION"
  • JPA : support for JPA2.1 EntityGraphs
  • JPA : support for JPA 2.1 create/drop/load scripts
  • JPA : runs against a JPA 2.1 API jar
  • JDO : support for create/drop/load scripts
  • JDOQL/JPQL : support for ordering directives for NULL placement

New in DataNucleus 3.3.0 M1 (Jun 11, 2013)

  • Mapping : cater for inheritance with (multiple) MappedSuperclass part way down tree but with superclass Entity with own table (i.e effectively @MappedSubclass)
  • SchemaTool : support properties file and/or System props overriding persistence.xml
  • Simplify internal metadata storage for fetch groups and constraints
  • Rename "datanucleus.metadata.validate" persistence property to "datanucleus.metadata.xml.validate"
  • Add "datanucleus.metadata.xml.namespaceAware" to allow control over use of XML namespaces
  • Fix to operation queue for Map remove operations
  • Add check on specification of discriminator value for abstract classes
  • JPA : Support more situations
  • JPA : run against JPA 2.1 API jar
  • JPA : Support JPA 2.1 Index and ForeignKey specification
  • JPA : Support JPA 2.1 JPQL "FUNCTION"
  • JPA : Support JPA 2.1 Criteria UPDATE/DELETE
  • JPA : Support JPA 2.1 FROM "ON" in Criteria query
  • JPA : Drop support for DN extension @Index annotation (use JPA 2.1 annotation now)
  • RDBMS : Schema Generation improvement to better cater for any ordering of input classes
  • RDBMS : Schema Generation fix to recursive initialisation of PK of a table
  • RDBMS : Fix to handling of FK Map where key/value have inheritance and the value/key is stored in a superclass
  • RDBMS : Fix to value-map discriminator handling for embedded object
  • RDBMS : add ability to invoke any SQL function (for JPA 2.1)
  • MongoDB : fix to explicitly specify the storage type for primitive wrapper types
  • Various minor bug fixes and improvements

New in DataNucleus 3.2.3 (Jun 11, 2013)

  • Mapping : cater for inheritance with (multiple) MappedSuperclass part way down tree but with superclass Entity with own table (i.e effectively @MappedSubclass)
  • SchemaTool : support properties file and/or System props overriding persistence.xml
  • Simplify internal metadata storage for fetch groups and constraints
  • Rename "datanucleus.metadata.validate" persistence property to "datanucleus.metadata.xml.validate"
  • Add "datanucleus.metadata.xml.namespaceAware" to allow control over use of XML namespaces
  • Fix to operation queue for Map remove operations
  • Add check on specification of discriminator value for abstract classes
  • JPA : Support more situations
  • RDBMS : Schema Generation improvement to better cater for any ordering of input classes
  • RDBMS : Schema Generation fix to recursive initialisation of PK of a table
  • RDBMS : Fix to handling of FK Map where key/value have inheritance and the value/key is stored in a superclass
  • RDBMS : Fix to value-map discriminator handling for embedded object
  • RDBMS : add ability to invoke any SQL function (for JPA 2.1)
  • MongoDB : fix to explicitly specify the storage type for primitive wrapper types
  • Various other bug fixes and minor improvements

New in DataNucleus 3.1.5 (May 27, 2013)

  • JDO : Fix to Localiser creation to avoid problem under OSGi
  • RDBMS : Fix to SQL query execution to avoid connection close problem
  • RDBMS : Fix to pessimistic locking for SQLServer

New in DataNucleus 3.1.1 (Sep 13, 2012)

  • Add hook for transaction event listeners
  • Improvements to metadata loading process to exceptions thrown and access to class/field that is causing the problem (allowing IDE tools to highlight the problem).
  • Support for datastores that use simple SCO wrappers for some fields and backed SCO wrappers for others
  • Major improvements to in-memory query evaluation : SUM, result class handling, creator expressions, JPQL "case", JPQL "type", support for Math functions, fix to some Date methods, support for methods on arrays.
  • Fix to reuse of queries (e.g when using COUNT to get size of original query result) to respect "subclasses" flag
  • Fix to pm.getObjectsById to cater for inheritance level
  • JDO : more flexibility on specification of embedded fields
  • JPA : vendor extension annotation for specifying indexes
  • JPA : fix to some obscure IdentifiableType method
  • RDBMS : more flexibility on query method invocation to allow them to be usable on subclasses of the invoked type
  • RDBMS : more flexibility on storage of Time fields
  • RDBMS : use plugin manager to handle method/operator invocations
  • Neo4j : first major release with Neo4j support
  • Neo4j : support lazy loading on results from queries
  • Neo4j : better handling of polymorphic queries excluding subclasses
  • MongoDB : support lazy loading on results from queries
  • MongoDB : support use of embedded fields in queries
  • MongoDB : support use of Enum as query parameter
  • Spatial : support Java-style method invocation in queries of spatial methods (for the majority of methods at least).
  • AWTGeom : support for Rectangle.contains with in-memory query evaluation
  • Various other bug fixes and minor improvements

New in DataNucleus 3.0.3 (Nov 7, 2011)

  • Rewrite of significant parts of the L2 cache to now store a map of field values rather than a detached persistable object. This means no locking is needed.
  • Fix to metadata identification of some Object and interface field relation types
  • Fix to query result cache evict-by-class process
  • Fix to generic compilation of implicit query parameters when repeated in the query
  • Change ObjectStringConverter/ObjectLongConverter to use generics for type safety
  • OSGi : Add export version to many MANIFEST entries
  • JDO : Add support for use of javax.validation
  • JDO : Respect persistence-unit "validation-mode" setting
  • JPA : Respect persistence-unit "validation-mode" setting
  • JPA : Add DataNucleus variant of orm.xsd so we can add on vendor specifics
  • Cache : Fix to use of Memcached caches so they can handle all "identity" types
  • Cache : Support Cacheonix as a query result cache
  • RDBMS : Fix to PostgreSQL ESCAPE syntax support
  • RDBMS : Fix to JDOQL "equalsIgnoreCase" handling
  • RDBMS : Fix to query serializeRead to only apply it when in a transaction
  • MongoDB : Support multitenancy via discriminator
  • MongoDB : Only evaluate query filter in-memory if not done completely in-datastore

New in DataNucleus 3.0.1 (Aug 27, 2011)

  • Improved support for DataNucleus in non-Eclipse OSGi environments (Alexey Sushko)
  • Separate synchronisation of PM/EM access into separate class so not used for majority of use-cases
  • Support for embedded "null-indicator" column/value for JPA (extension)
  • Fix bug in detach() of newly-persistent object that was causing NPE on commit (JPA)
  • Change access to StoreManager to better facilitate data federation
  • JSON : minor change to URL processing
  • RDBMS : Support for JDOQL "JDOHelper.getVersion()"
  • RDBMS : Support SQLServer with table names having spaces
  • RDBMS : Improve support for indexes under SQLServer
  • ODF : Support retrieval of interface field
  • Excel : Support retrieval of interface field
  • MongoDB : Support retrieval of interface field
  • JDO JCA : Better support for JBoss 7

New in DataNucleus 2.2.4 (May 8, 2011)

  • Fix to use of embedded fields where having a relation to a non-embedded.
  • Allow property methods (getter/setter) to be final
  • OSGi : add optional import of log4j
  • Fix to log messages so we don't call cache.size() since some don't support it
  • Mark SortedSet/SortedMap wrappers as Serializable
  • Add check for null literal in JDOQL parser
  • JPA : Fix to use of @CollectionTable
  • JPA : Improvements to XML metadata handling
  • RDBMS : fix to String.matches type handling
  • Other minor cleanups

New in DataNucleus 2.2.0 (Jun 10, 2010)

  • Support for JPA2 Criteria query API (doesn't yet support subqueries, and some less useful query builder methods)
  • Change all primitive wrapper constructor usage to use class valueOf() for efficiency
  • Fix to annotation processing to ignore all unsupported class annotations, and to correctly handle methods called get(), is()
  • Complete generic compile of JPQL TRIM and LIKE keywords, and support COALESCE, NULLIF keywords
  • Add support for in-memory query evaluation of COALESCE/NULLIF keywords
  • Update in-memory query evaluator to load fields where needed
  • Minor fixes to JDO getObjectById to pass new tests in JDO2.3 TCK
  • Minor changes to JDO timeout setter methods to pass new tests in JDO2.3 TCK
  • Fix to L2 cache retrieval of relation field to use the value
  • Fix to use of @Persistent and @Extension on a field, so that the settings are respected
  • Clean up of generic query compilation expressions to not use SymbolTable before bind()
  • XML : Fix to handling of empty XML file when searching for an object
  • RDBMS : respect "indexed" value of false when creating indexes

New in DataNucleus 2.1.0 (Feb 9, 2010)

  • Support for JPA2 Criteria query API (doesn't yet support subqueries, and some less useful query builder methods)
  • Change all primitive wrapper constructor usage to use class valueOf() for efficiency
  • Fix to annotation processing to ignore all unsupported class annotations, and to correctly handle methods called get(), is()
  • Complete generic compile of JPQL TRIM and LIKE keywords, and support COALESCE, NULLIF keywords
  • Add support for in-memory query evaluation of COALESCE/NULLIF keywords
  • Update in-memory query evaluator to load fields where needed
  • Minor fixes to JDO getObjectById to pass new tests in JDO2.3 TCK
  • Minor changes to JDO timeout setter methods to pass new tests in JDO2.3 TCK
  • Fix to L2 cache retrieval of relation field to use the value
  • Fix to use of @Persistent and @Extension on a field, so that the settings are respected
  • Clean up of generic query compilation expressions to not use SymbolTable before bind()
  • XML : Fix to handling of empty XML file when searching for an object
  • RDBMS : respect "indexed" value of false when creating indexes
  • RDBMS : fix to SQL embed extension so we have SQL_boolean, SQL_numeric static functions
  • RDBMS : support for JPQL COALESCE, NULLIF functions
  • RDBMS : fix to JPQL to not add dup joins when defined in FROM clause and also from result
  • RDBMS : JPQL - support for ESCAPE on LIKE, and support for all TRIM options
  • Add support for persisting some java types as Long where no native handling
  • HBase : better handling of update to not delete records
  • DB4O : upgrade to 7.12 and above

New in DataNucleus 2.0.0 (Jan 28, 2010)

  • Addition of plugin for persistence to HBase (HADOOP) datastores
  • Support for persistence to Amazon S3 datastores
  • Support for persistence to Oracle Timesten datastores
  • Addition of plugin for persistence of JodaTime types
  • Change default for non-transactional read/write to true for JDO
  • Support atomic non-transactional write persist/delete operations
  • Level 2 Cache is now enabled by default (soft)
  • Cache : Support for pinning/unpinning of query results with Memcache/javax.cache
  • Split query cache into 3 components : generic compilation, datastore compilation and query results. Added API for managing caching of query results (using JDO or JPA).
  • Enhancer : add ability to generate PK classes (including composite)
  • JDO : Support for JDO 2.3 Query cancel, and datastore read/write timeout
  • JPA : Support for extended persistence context
  • JPA2 : Support for metamodel API
  • JPA2 : Support for bean validation API
  • JPA2 : Support for various JPQL keywords
  • JPA2 : Support for 1-N FK bidirectional relations
  • JPA2 : Support for 1-N collection/map of non-persistable objects.
  • JPA2 : Support for TypedQuery
  • RDBMS : Support for update/delete-by-query for JPQL
  • RDBMS : Rewritten JPQL implementation building on generic query compiler. This is now the default JPQL implementation for RDBMS, and can be used with the query caching mechanism.
  • RDBMS : Rewritten JDOQL implementation building on generic query compiler. This is not currently the default JDOQL implementation but is available to be used, and can be used with the query caching mechanism.
  • LDAP : Support for persistence of recursive object graph to hierarchical structure
  • Add support for PMF/EMF singleton pattern, via persistence property
  • Spatial : Many fixes to handling of JTS types.
  • Many bug fixes, and minor feature additions.