Apache OpenJPA 2.2.0
Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
--------------------------------------------------------------------------------

Content
-------
   * Overview
   * License
   * Notices
   * Prerequisites
   * Documentation
   * Getting Involved
   * Included Changes
     * Sub-tasks
     * Bugs
     * Improvements
     * New Features
     * Test


Overview
--------
   The Apache OpenJPA community is proud to release a SNAPSHOT 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


License
-------
   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

   http://www.apache.org/licenses/LICENSE-2.0

   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 included in each assembly.


Notices
-------
   Copyright 2006,2012 The Apache Software Foundation.
   Apache, the Apache feather logo and OpenJPA are trademarks of
   The Apache Software Foundation.

   This product includes software developed at
   The Apache Software Foundation (http://www.apache.org/).

   OpenJPA includes the persistence and orm schemas from the JPA specifications.
   Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.
   OpenJPA elects to include this software in this distribution under the
   CDDL license.  You can obtain a copy of the License at:
       https://glassfish.dev.java.net/public/CDDL+GPL.html
   The source code is available at:
       http://java.net/projects/glassfish

   The complete list of notices can be found in NOTICE.txt included in each
   assembly.


Prerequisites
-------------
   OpenJPA requires Java SE 6 or higher and a relational
   database of some sort.


Documentation
-------------
   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
       http://openjpa.apache.org/documentation.html

   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:
       http://openjpa.apache.org/mailing-lists.html


Getting Involved
----------------
   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
          freenode.net.
        * Bugs and other issues can be posted on the issue tracker at
          https://issues.apache.org/jira/browse/OPENJPA


Included Changes in OpenJPA 2.2.0
---------------------------------

Sub-task

    [OPENJPA-1593] - Create an OSGiManagedRuntime
    [OPENJPA-2081] - Provide subset of XML support for OpenJPA annotations

Bug

    [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

Improvement

    [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

New Feature

    [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

Task

    [OPENJPA-1786] - Upgrade to latest JPA 2.0 TCK
    [OPENJPA-1834] - Upgrade trunk to use Deby 10.6.2.1 for junits
    [OPENJPA-1875] - Add generics to the Graph code
    [OPENJPA-2089] - upgrade bval to latest 0.3-incubating
    [OPENJPA-2091] - update docbook maven plugin

Test

    [OPENJPA-2029] - Add PreparedQuery tests for non-sequential positional parameters support
