<!--
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.
-->
<html>
<title>Release Notes for Apache OpenJPA 3.0.0</title>
<body>
<h1>Release Notes for Apache OpenJPA 3.0.0</h1>
<p>
<ul>
  <li><a href="#Overview">Overview</a></li>
  <li><a href="#Prerequisites">Prerequisites</a></li>
  <li><a href="#Documentation">Documentation</a></li>
  <li><a href="#GetInvolved">Getting Involved</a></li>
  <li><a href="#License">License</a></li>
  <li><a href="#Notice">Notice</a></li>
  <li><a href="#ReleaseNotes">Release Notes</a></li>
  <li><a href="#Previous">Release Notes for previous OpenJPA releases</a></li>
</ul>
</p>
<BR>
<hr>
<h2><a name="Overview"></a>Overview</h2>

<P>
   The Apache OpenJPA community is proud to release a distribution of
   OpenJPA 3.0.0. This distribution is based on the final JSR 338 Java
   Persistence API, Version 2.2 specification while not beeing fully TCK tested.
   We remain backwards compatible with prior releases based on the
   Java Persistence API 1.0 and 2.0.
</P>

<p>Additional information on the OpenJPA project may be found at the project
web site: <a href="http://openjpa.apache.org">http://openjpa.apache.org</a></p>

<h2><a name="Prerequisites"></a>Prerequisites</h2>
<P>OpenJPA requires Java 8 or higher and a relational
database of some sort.
</p>

<h2><a name="Documentation"></a>Documentation</h2>
<p>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
<a href="http://openjpa.apache.org/documentation.html">
http://openjpa.apache.org/documentation.html</a></p>
<p>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:
<a href="http://openjpa.apache.org/mailing-lists.html">
http://openjpa.apache.org/mailing-lists.html</a></p>

<h2><a name="GetInvolved"></a>Getting Involved</h2>
<p>The Apache OpenJPA project is being built by the open source community for the open source community -
we welcome your input and contributions!</p>
<P>What we are looking for:
<ul>
    <li> Source code and fixes contributions </li>
    <li> Documentation assistance </li>
    <li> Product and feature suggestions </li>
    <li> Detailed and constructive feedback </li>
    <li> Articles and whitepapers </li>
</ul></p>
<p>How do I contribute?
<ul>
    <li> To discuss Apache OpenJPA topics check out the mailing lists. </li>
    <li> Informal discussion also occurs on the #openjpa IRC channel on
         freenode.net. </li>
    <li> Bugs and other issues can be posted on
         <a href="https://issues.apache.org/jira/browse/OPENJPA">
         the issue tracker</a>.
     </li>
</ul>
</p>

<BR>
<hr>
<h2><a name="License"></a>License</h2>
<P>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.
<BR>You may obtain a copy of the License at:
<a href="http://www.apache.org/licenses/LICENSE-2.0">
http://www.apache.org/licenses/LICENSE-2.0</a>
<BR>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.</p>
<P>The license may also be found in LICENSE.txt which is included
in each release of OpenJPA.</P>

<h2><a name="Notice"></a>Notice</h2>
<p>Copyright 2006,2018 The Apache Software Foundation
<BR>This product includes software developed at The Apache Software Foundation (http://www.apache.org/).</p>
<P>Apache OpenJPA includes the persistence and orm schemas from the JPA specifications.
<BR>Copyright 2005-2009 Sun Microsystems, Inc. All rights reserved.
<BR>Apache OpenJPA elects to include this software in this distribution under the CDDL license.
<BR>You can obtain a copy of the License at:
<a href="https://glassfish.dev.java.net/public/CDDL+GPL.html">https://glassfish.dev.java.net/public/CDDL+GPL.html</a>
<BR>The source code is available at:
<a href="http://java.net/projects/glassfish">http://java.net/projects/glassfish</a></p>
<P>The complete list of notices can be found in NOTICE.txt included in each assembly.</p>

<BR>
<hr>
<h2><a name="ReleaseNotes">Release Notes</a></h2>

<hr>
<h3><a name="300">OpenJPA 3.0.0</a></h3>




Release Notes - OpenJPA - Version 3.0.0

<h2>        Sub-task
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2663'>OPENJPA-2663</a>] -         cleanup ConcreteClassGenerator and move to ASM
    </li>
</ul>

<h2>        Bug
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2300'>OPENJPA-2300</a>] -         AnnotationProcessor shows warnings when executed on Java 7 sources
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2646'>OPENJPA-2646</a>] -         Sporadic NullPointerException occurs under heavy load when QuerySQLCache is enabled.
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2658'>OPENJPA-2658</a>] -         TestQueryTimeout test is broken
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2672'>OPENJPA-2672</a>] -         ConfigurationImpl.loadGlobals() has java.util.ConcurrentModificationException vulnerability
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2674'>OPENJPA-2674</a>] -         JarFile is not closed
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2675'>OPENJPA-2675</a>] -         Missing check for null parameter in equals()
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2676'>OPENJPA-2676</a>] -         openjpa relies on default locale
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2684'>OPENJPA-2684</a>] -         Persistence entities not recognized in Wildfly 10 if in a JAR
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2689'>OPENJPA-2689</a>] -         Calling setFixedCHAR on newer Oracle JDBC drivers fails with an IllegalAccessException
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2690'>OPENJPA-2690</a>] -         Update OSGi Import-Package to support Oracle CLOB/BLOB
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2691'>OPENJPA-2691</a>] -         OracleDictionary should use non Deprecated method of empty_lob
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2698'>OPENJPA-2698</a>] -         Query cache incorrectly handles parameters for BETWEEN expressions
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2725'>OPENJPA-2725</a>] -         fix ConcurrentModificationException during unrefed dependents cleanup
    </li>
</ul>

<h2>        New Feature
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2592'>OPENJPA-2592</a>] -         JPA 2.1 stored procedure support
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2598'>OPENJPA-2598</a>] -         Support SQL server Offset Fetch syntax for pagination
    </li>
</ul>

<h2>        Improvement
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2660'>OPENJPA-2660</a>] -         Resolve Maven warnings
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2669'>OPENJPA-2669</a>] -         Add apache karaf feature for openjpa and adapt OSGi imports
    </li>
</ul>

<h2>        Task
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2641'>OPENJPA-2641</a>] -         update build pom
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2652'>OPENJPA-2652</a>] -         Prepare SVN for OpenJPA-3.0 development
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2653'>OPENJPA-2653</a>] -         Upgrade documentation page for 3.0.0 work
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2654'>OPENJPA-2654</a>] -         merge over the work done in branches/openjpa_jpa-2.1/ to trunk
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2655'>OPENJPA-2655</a>] -         verify signature of geronimo-jpa-2.1-spec with the RI jars
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2659'>OPENJPA-2659</a>] -         upgrade to apache-parent-18
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2664'>OPENJPA-2664</a>] -         migrate from commons-lang to commons-lang3
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2666'>OPENJPA-2666</a>] -         Fix Java9 compatibility
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2667'>OPENJPA-2667</a>] -         Upgrade BVAL to 1.1
    </li>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2677'>OPENJPA-2677</a>] -         upgrade to BVAL-1.1.2
    </li>
</ul>

<h2>        Dependency upgrade
</h2>
<ul>
    <li>[<a href='https://issues.apache.org/jira/browse/OPENJPA-2730'>OPENJPA-2730</a>] -         Update to XBean Asm 6 Shaded 4.8
    </li>
</ul>

<BR>
<hr>
<h2><a name="Previous"></a>Previous Releases</h2>
<p>Release notes for earlier releases of OpenJPA may be found in SVN at the following locations.
<ul>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.4.3/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.4.3 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.4.2/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.4.2 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.4.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.4.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.4.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.4.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.3.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.3.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.2.2/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.2.2 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.2.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.2.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.2.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.2.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.1.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.1.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.1.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.1.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.1.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.1.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.0-beta3/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.0-Beta 3 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.0-beta2/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.0-Beta 2 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.0-beta/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.0-Beta RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/2.0.0-M3/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 2.0.0-Milestone 3 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.2.2/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.2.2 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.2.2/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.2.2 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.2.1/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.2.1 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.1.0/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.1.0 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.0.4/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.0.4 RELEASE-NOTES.html</a></li>
  <li><a href='http://svn.apache.org/viewvc/openjpa/tags/1.0.3/openjpa-project/RELEASE-NOTES.html?view=co'>OpenJPA 1.0.3 RELEASE-NOTES.html</a></li>
</ul></p>

<hr>
<p>Copyright (C) 2006,2015 Apache Software Foundation. Licensed under Apache License 2.0.<br>
Apache, the Apache feather logo and OpenJPA are trademarks of Apache Software Foundation.<br>
</body>
</html>
