Release Notes for Apache OpenJPA 2.2.0
The Apache OpenJPA community is proud to release a distribution of
OpenJPA 2.2.0. This distribution is based on the final JSR 317 Java
Persistence API, Version 2.0 specification and passes the JPA 2.0 TCK,
while remaining backwards compatible with prior releases based on the
Java Persistence API (JPA 1.0) part of Java Community Process JSR-220
(Enterprise JavaBeans 3.0).
Additional information on the OpenJPA project may be found at the project
web site: http://openjpa.apache.org
OpenJPA requires Java 6 or higher and a relational
database of some sort.
If you have questions about OpenJPA, a good source of information is the
online product manual. You can find the manual for the current release as well
as older releases of OpenJPA at
If you can't find what you are looking for in the manual or would like more
clarification, please post to the OpenJPA development mailing list.
Information on all of the OpenJPA mailing lists may be found here:
The Apache OpenJPA project is being built by the open source community for the open source community -
we welcome your input and contributions!
What we are looking for:
- Source code and fixes contributions
- Documentation assistance
- Product and feature suggestions
- Detailed and constructive feedback
- Articles and whitepapers
How do I contribute?
- To discuss Apache OpenJPA topics check out the mailing lists.
- Informal discussion also occurs on the #openjpa IRC channel on
- Bugs and other issues can be posted on
the issue tracker.
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.
You may obtain a copy of the License at:
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
The license may also be found in LICENSE.txt which is included
in each release of OpenJPA.
Copyright 2006,2012 The Apache Software Foundation
This product includes software developed at The Apache Software Foundation (http://www.apache.org/).
Apache OpenJPA includes the persistence and orm schemas from the JPA specifications.
Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.
Apache OpenJPA elects to include this software in this distribution under the CDDL license.
You can obtain a copy of the License at:
The source code is available at:
The complete list of notices can be found in NOTICE.txt included in each assembly.
Release Notes - OpenJPA - Version 2.2.0
- [OPENJPA-478] - Contradictory text in manual section 10.2.6. JPQL GROUP BY, HAVING
- [OPENJPA-867] - Unexpected Behaviour of DBDictionary.indexOf() method
- [OPENJPA-1343] - Incorrect example of openjpa.Sequence property
- [OPENJPA-1376] - @SequenceGenerator allocationSize incorrect implementation
- [OPENJPA-1650] - Adding a slice dynamically should be done via persistence unit only
- [OPENJPA-1651] - Unique colums automatically defined as non-nullable (part 2)
- [OPENJPA-1657] - Postgres connection throws NPE with null properties
- [OPENJPA-1686] - Persistence of Dynamic and Generic Type
- [OPENJPA-1725] - Schemaname wrongly included in DBDictionary.checkNameLength after Tablename correctly truncated
- [OPENJPA-1746] - NullPointerException when a null value is set in the properties map passed to Entity.createEntityManagerFactory
- [OPENJPA-1768] - StackOverflowError when finding an Entity with an Eager ManyToMany relationship.
- [OPENJPA-1787] - Bean validation fails merging a new entity
- [OPENJPA-1845] - the prepared query cache doesn't currently work correclty with 'SELECT IN' statements
- [OPENJPA-1856] - Executing bulk updates should evict stale data from the DataCache
- [OPENJPA-1873] - EntityManager#merge sometimes passes wrong entity values to @PostLoad EntityListeners
- [OPENJPA-1876] - Slow JDBC tests
- [OPENJPA-1896] - OpenJPA cannot store POJOs if a corresponding record already exists
- [OPENJPA-1898] - TestQueryMultiThreaded fails with OOME "unable to create new native thread"
- [OPENJPA-1900] - ClassCastException when serializing an entity if DetachedStateField=true
- [OPENJPA-1901] - QueryCacheStoreQuery$CachedObjectId that is not Serializable
- [OPENJPA-1902] - SQLServer reserved words may not be used as identifiers
- [OPENJPA-1903] - Some queries only work the first time they are executed
- [OPENJPA-1904] - OptimisticLockException during refresh(*,PESSIMISTIC_*) with eagar fetch on relationship fields
- [OPENJPA-1905] - jar-file validation should be deferred until after OpenJPA is confirmed to be the application's chosen provider
- [OPENJPA-1906] - Issue info / warning message when connection retain mode is always
- [OPENJPA-1909] - enhance unit tests with the correct persistence.xml
- [OPENJPA-1910] - openjpa uses application ClassLoader for resolving BrokerFactory (revisited)
- [OPENJPA-1911] - InvalidStateException is thrown when merge an entity with derived identiy
- [OPENJPA-1912] - enhancer generates invalid code if fetch-groups is activated
- [OPENJPA-1915] - missing license header
- [OPENJPA-1918] - MetaDataRepository.preload() ignores class loader returned by PersistenceUnitInfo.getClassLoader()
- [OPENJPA-1923] - Allow flexible (non-standard) syntax for collection-valued parameters in IN() expresseion of JPQL query
- [OPENJPA-1928] - Resolving factory method does not allow method overriding
- [OPENJPA-1932] - Documentation corrections
- [OPENJPA-1935] - Informix lock exceptions are not mapped properly by OpenJPA
- [OPENJPA-1938] - Typo of time data type in SQLServerdictionary for MSSQL 2008
- [OPENJPA-1939] - index identifier max length for DB2 v9 is 128.
- [OPENJPA-1940] - ReverseMapping tool does not find primary keys with Oracle
- [OPENJPA-1941] - Criteria query returns wrong result when query cache is enabled
- [OPENJPA-1943] - Query timeout hint not honored consistently when pessimistic lock is issued to database requires multi-statements locking scheme
- [OPENJPA-1944] - Extra select statements executed when version column is null.
- [OPENJPA-1951] - missing key "cant-set-value" in localizer properties org.apache.openjpa.jdbc.meta.strats
- [OPENJPA-1953] - Copying data from inputStream to OuputStream needs appropriate buffer size
- [OPENJPA-1954] - ArrayIndexOutOfBoundsException when querying on a version field that is in a MappedSuperclass
- [OPENJPA-1957] - XML overriding column names for ArrayList attributes causes exception.
- [OPENJPA-1958] - IndexOutOfBoundsException in BatchingPreparedStatementManagerImpl
- [OPENJPA-1959] - RuntimeExceptionTranslator should be transient in DelegatingQuery
- [OPENJPA-1960] - openjpa.InitializeEagerly breaks bean-validation integration
- [OPENJPA-1965] - ClassCastException when using JAXB and MetaModel annotation processor
- [OPENJPA-1968] - SQLServerDictionery not using DATETIME2 for jdbc driver other than MS JDBC driver
- [OPENJPA-1969] - SQLServer / DataDirect SQLCode=HYT00 not handled
- [OPENJPA-1974] - StackOverflowError when performing multiple subquery in collection field with eager fetch
- [OPENJPA-1975] - Only obtain default schema name when needed (DB2)
- [OPENJPA-1981] - Improper cleanup in SchemaGenerator
- [OPENJPA-1983] - Merge of lazily fetched fields, and merge of managed entities deviates from spec
- [OPENJPA-1984] - Incorrect ViolationContraint getRootBean when removing bean with embedded entity validation
- [OPENJPA-1985] - ClassCastException in max(Timestamp) function on PostgreSQL
- [OPENJPA-1986] - Extra queries being generated when cascading a persist
- [OPENJPA-1987] - Postgres / Ingres does not support null table for getImportedKeys
- [OPENJPA-1989] - *ToOne relationships specified as LAZY in xml aren't honored
- [OPENJPA-1992] - java.lang.ArrayIndexOutOfBoundsException if positional parameter are not started from 1
- [OPENJPA-1994] - Index is a reserved word for MySQL
- [OPENJPA-1996] - OpenJPA Samples fail on MacOS X
- [OPENJPA-1998] - NPE getTableNameForMetadata when running SchemaTool reflect against Postgres DB
- [OPENJPA-2000] - Wrong PostgreSQL data type for REAL - "float8", must be "float4"
- [OPENJPA-2005] - PostgresDictionary.isOwnedSequence needs a null check
- [OPENJPA-2006] - Sequence generated ids may fail to get assigned when flushing a graph with bi-directional relationships
- [OPENJPA-2007] - Setting query hint "openjpa.FetchPlan.Isolation" results in misleading warning
- [OPENJPA-2008] - OpenJPA does not work with native queries in a distributed (Slice) environment
- [OPENJPA-2010] - Duplicate meta data warning logged due to parsing the same location twice
- [OPENJPA-2011] - Prevent reparsing annotation metadata for queries
- [OPENJPA-2013] - columnDefinition for TEXT types ends up in wrong sql statement
- [OPENJPA-2025] - Byte and Char should be treated as SingularAttributes, not lists by the metamodel generator
- [OPENJPA-2027] - Metamodel genereated at runtime expects ListAttribute for all arrays - not just PersistentCollections.
- [OPENJPA-2034] - Update H2 Database sql error codes as per the changes in v1.3.154
- [OPENJPA-2036] - DynamicEnhancer should look for tools.jar in java.home/lib for all JDKs, not just the IBM SDK.
- [OPENJPA-2039] - FKs for EAGER fields that are not in the current fetchplan aren't selected
- [OPENJPA-2044] - Invalid header in MetaModel classes generated by AnnotationProcessor
- [OPENJPA-2045] - NAME is a valid column name for H2 databases.
- [OPENJPA-2051] - Entities in a relationship are not properly cascaded after a EntityManager.flush is executed.
- [OPENJPA-2056] - Postgres V9.1 issue with LIKE clause and Escape Strings
- [OPENJPA-2059] - Missing localizer.properties for org.apache.openjpa.persistence.util.SourceCode
- [OPENJPA-2060] - AnnotationProcess failed to generate metadata for List<String> attribute in entity
- [OPENJPA-2065] - JPA 2.0 Spec. Violation? EntityManager#createNamedQuery(String, Class) bombs with non-entity Class parameter
- [OPENJPA-2066] - Edge case in openJPA-1227. openJPA fails to create a join and thus returns wrong data when a collection is selected from superclass and another field is selected from subclass twoor more levels down the hierarchy.
- [OPENJPA-2069] - Natvie sequence problems uncovered after OPENJPA-1376
- [OPENJPA-2070] - Error processing while populating Metamodel classes needs improvement
- [OPENJPA-2071] - NPE during ResultPacker interface processing
- [OPENJPA-2073] - MappingTools requires live connection to DB2 server to retrieve default schema name
- [OPENJPA-2076] - Minor fix-ups to messages
- [OPENJPA-2077] - Pom references to org.codehaus.mojo openjpa-maven-plugin cause problems
- [OPENJPA-2083] - Unmapped fields silently treated as transient
- [OPENJPA-2100] - openjpa-maven-plugin fails to create SQL for entities which contain enums
- [OPENJPA-2101] - PersistenceProductDerivation overwrites the RemoteCommitProvider configuration
- [OPENJPA-2104] - BindParameter is not a valid query parameter as processed in DBDictionary's setUnknown()
- [OPENJPA-2105] - Document changes no longer being uploaded
- [OPENJPA-2107] - ManagedCache conflict due adding an entity 2 times in the same query.
- [OPENJPA-2117] - XML overriding column names for 1xM attributes causes exception.
- [OPENJPA-2119] - Update org.apache.openjpa.persistence.util.SourceCode
- [OPENJPA-2122] - VerifyError with Java 7 when using javaagent or dynamic container enhancement
- [OPENJPA-2124] - Use of XMLValueHandler results in a NullPointerException when classloader does not provide package support
- [OPENJPA-302] - PCEnhancer needs target classes on classpath
- [OPENJPA-487] - Generated SUBSTRING SQL is ugly and inefficient
- [OPENJPA-758] - OpenJPA doesn't find ValueHandlers with an applicable class loader
- [OPENJPA-1555] - SQLBuffer code cleanup
- [OPENJPA-1777] - Allow setting of diagonstic context for each slice in a more flexible manner
- [OPENJPA-1778] - Improved error information for unenhanced classes.
- [OPENJPA-1798] - Improve messages in localize.properties
- [OPENJPA-1803] - Unwrap EntityManager to Connection
- [OPENJPA-1847] - Use a single connection when generating schema
- [OPENJPA-1863] - update HSQL dictionary for HSQLDB 2.0
- [OPENJPA-1917] - Cache column alias in SelectImpl
- [OPENJPA-1937] - Document OpenJPAEntityManager.evict methods
- [OPENJPA-1945] - Improve aspects of the OpenBooks sample
- [OPENJPA-1972] - DB2 V9.7 changed the default behavior concerning blocking behavior with isolation levels greater then read uncommitted
- [OPENJPA-1990] - Skip getting extend exception text when running on DB2
- [OPENJPA-1999] - Optional support for non-sequential positional parameters
- [OPENJPA-2014] - Allow proxies to stay in place when Detaching
- [OPENJPA-2020] - Make some members of StateManagerImpl protected to allow for greater extensability
- [OPENJPA-2031] - Unable to import maven projects with m2e version 1.0
- [OPENJPA-2042] - Diagnostics for Application Managed EntityManagerFactory leaks.
- [OPENJPA-2043] - OpenJPAId hashCode() value needs to be consistent after serialization process
- [OPENJPA-2047] - Document the impact of Persistence Aware classes
- [OPENJPA-2068] - Improve performance of java.util.Calendar fields
- [OPENJPA-2075] - Abstract out parameter handling / validation from org.apache.openjpa.persistence.QueryImpl to allow for greater extensibility
- [OPENJPA-2084] - Upgrade Derby dependency to 10.8.x
- [OPENJPA-2085] - Improve enhancement process to support JAVA 7 compliant class file generation
- [OPENJPA-2087] - Remove or limit the use of the ConcreteClassGenerator
- [OPENJPA-2116] - Scrape the barrel for performance juice
- [OPENJPA-2120] - Add new option to eliminate reflection calls from enhancer generated IdClass PC copy operations
- [OPENJPA-2128] - Add a boolean to FieldMetaData to denote whether or not a field has a @EmbeddedId annotation.
- [OPENJPA-2130] - Enable Java 7 testing by allowing test cases to compile targeting to 1.7
- [OPENJPA-184] - use DB2 Diagnostic interface to report extended error diagnostics on SQL Exception
- [OPENJPA-1859] - Create a sample to demonstrate usage of JEST
- [OPENJPA-1934] - contribute an openjpa-maven-plugin
- [OPENJPA-2108] - Allow an option to terminate MappingTool-generated SQL with a character other than semicolon
- [OPENJPA-2029] - Add PreparedQuery tests for non-sequential positional parameters support
Release notes for earlier releases of OpenJPA may be found in SVN at the following locations.
Copyright (C) 2006,2012 Apache Software Foundation. Licensed under Apache License 2.0.
Apache, the Apache feather logo and OpenJPA are trademarks of Apache Software Foundation.