Release Notes for OpenJPA | |
* Overview | |
* License | |
* Prerequisites | |
* Documentation | |
* Getting Involved | |
* Bugs | |
* Improvements | |
* New Features | |
* Task | |
* Test | |
Overview | |
These notes describe the difference between OpenJPA release 1.0.1 and the | |
preceding releases 0.9.7 and 1.0.0. 1.0.1 is the first maintenance release | |
since OpenJPA graduated to an Apache top level project (TLP), and contains | |
many new features and bugfixes. | |
OpenJPA is a feature-rich implementation of the persistence part of Java | |
Community Process JSR-220 (Enterprise JavaBeans 3.0), which is known as | |
the Java Persistence API (JPA). OpenJPA can be used as a stand-alone POJO | |
persistence layer, or it can be integrated into any EJB3.0 compliant | |
container and many lightweight frameworks. This release of OpenJPA is 100% | |
compliant with the JPA specification. | |
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 which is included in each | |
release of OpenJPA. | |
Prerequisites | |
OpenJPA requires Java 1.5 but will not compile with Java 6. For more | |
detail please see http://issues.apache.org/jira/browse/OPENJPA-5 | |
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're looking for in the manual or would like more | |
clarification you 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 project JIRA. | |
OpenJPA 0.9.7 Release Notes | |
Bugs | |
The following bugs have been fixed for release 0.9.7 | |
* [OPENJPA-16] - NPE in createQuery for EJB QL with nested correlated | |
subqueries | |
* [OPENJPA-21] - Time is missing from list of mutable classes. | |
* [OPENJPA-22] - locate & substring queries fail both db2 & derby, | |
cannot use parameter markers in expression ?-? | |
* [OPENJPA-23] - -418 sqlexception using DB2 and EJB QL with SQRT or MOD | |
* [OPENJPA-24] - Allow OpenJPA to be extensible | |
* [OPENJPA-25] - Incorrect SQL generated for queries involving more than | |
one AbstractSchemaNames, generated SQL FROM clause is missing 'Table | |
alias' | |
* [OPENJPA-35] - In-memory Delete operation fails with active DataCache | |
* [OPENJPA-41] - transforming classes doesn't work | |
* [OPENJPA-48] - parsing error - cast of subselect does not work | |
* [OPENJPA-50] - bad sql pushdown, cast changes datatype | |
* [OPENJPA-53] - bad sql pushdown for nested subselects, missing nested | |
subselect | |
* [OPENJPA-54] - bad sql pushdown, should use all syntax | |
* [OPENJPA-56] - in derby concat with input parameter needs a cast, | |
otherwise becomes long varchar and some operations do not work | |
* [OPENJPA-60] - Specifying the wrong persistence implementation in | |
persistence.xml leads to misleading error message | |
* [OPENJPA-62] - Ejbql join queries show invalid null Entities when run | |
in a new persistence context where no entity instances exist. | |
* [OPENJPA-71] - Caching primitive array types consumes excessive memory | |
* [OPENJPA-77] - Problems in default setting in DB2Dictionary , also | |
missing support for DB2 z/OS platforms | |
* [OPENJPA-80] - Bad Escaping for LIKE in MySQL | |
* [OPENJPA-98] - Java deadlock when insert in t1 and find in t2 when | |
using IBM JVM 1.5.0 | |
* [OPENJPA-100] - entries failing to be processed for persistence unit | |
rooted in an EAR | |
* [OPENJPA-102] - JTA transaction rollback, nonexistant instances, | |
transactional persistence context => failures during afterCompletion() | |
and close() | |
* [OPENJPA-103] - Default Listeners not being processed correctly | |
* [OPENJPA-104] - OpenJPA does not detach instances on rollback() | |
* [OPENJPA-107] - @SqlResultSetMappings fails in mapping tool with | |
java.lang.ArrayStoreException | |
* [OPENJPA-108] - @AttributeOverrides fails in mapping tool with | |
java.lang.ArrayStoreException | |
* [OPENJPA-109] - every NativeQuery using SqlResultSetMapping fails at | |
runtime with There is no query result mapping for "null" with name | |
"xxx" when the entity is persisted in a different method than the | |
method doing the query. | |
* [OPENJPA-110] - Every NamedNativeQuery using ResultSetMapping fails at | |
runtime with class cast exception when try to iterate over list | |
* [OPENJPA-111] - native queries fail when use named parameters | |
* [OPENJPA-115] - Bottleneck(s) with using OpenJPA in a | |
Container-managed environment | |
* [OPENJPA-116] - EntityManager.getDelegate should throw an | |
IllegalStateException | |
* [OPENJPA-118] - AutoDetach property has no effect | |
* [OPENJPA-119] - EntityManager.clear() should not implicitly invoke the | |
flush operation | |
* [OPENJPA-121] - Table name defaults to the class name instead of the | |
entity name | |
* [OPENJPA-122] - EntityManager does not throw exceptions after close() | |
in required cases | |
* [OPENJPA-132] - java.lang.NoSuchMethodError for entity with ID of type | |
java.sql.Date | |
* [OPENJPA-133] - Can't find non-public callback methods with superclass | |
or interface parameters | |
* [OPENJPA-134] - Extra unneeded SQL joins for OneToMany relationship | |
with fetch type EAGER | |
* [OPENJPA-139] - PersistenceException merging an entity with a Calendar | |
field. | |
* [OPENJPA-140] - Wrong package name in test classes | |
* [OPENJPA-142] - Entity name is ignored when specified in the orm.xml | |
file | |
* [OPENJPA-144] - JDBCConfigurationImpl does not support JNDI lookup for | |
non-jta-data-source. | |
* [OPENJPA-146] - Entity enhancement fails while using EmbeddedId on a | |
MappedSuperclass | |
* [OPENJPA-150] - @Column in @AttributeOverride not honoring table | |
attribute that maps to a secondary table in mappedsuperclass entity | |
* [OPENJPA-154] - OptimisticLockException working with Savepoints | |
* [OPENJPA-155] - java.lang.ArrayIndexOutOfBoundsException during commit | |
* [OPENJPA-157] - NullPointerException when running query with null | |
parameter | |
* [OPENJPA-162] - @OrderBy on @OneToMany does not allow ordering by @Id | |
value | |
* [OPENJPA-174] - error when find()'ing an abstract class | |
* [OPENJPA-175] - Eager selects by PagingResultObjectProvider may not | |
use the FetchBatchSize | |
* [OPENJPA-179] - Schemas defined in orm.xml are only applied when a | |
name is also specified. | |
* [OPENJPA-181] - ClassCastException when executing bulk delete on an | |
entity that owns a OneToOne with a Cascade.DELETE when DataCache is on | |
* [OPENJPA-185] - optional attribute is not overriden by xml descriptor | |
* [OPENJPA-186] - Build failure of OpenJPA sources from trunk | |
* [OPENJPA-202] - after invoking LRS processing in a client by calling an | |
@LRS annotated relationship, the next em.clear()/em.close() gets | |
org.apache.openjpa.persistence.InvalidStateException: You cannot | |
transfer large result set fields from one object or field to another | |
* [OPENJPA-208] - NoResultException and NonUniqueResultException are not | |
thrown when expected | |
* [OPENJPA-214] - Need to support floating point primary keys | |
Improvements | |
Improvements made for release 0.9.7 | |
* [OPENJPA-10] - persistence unit name should be default diagnostic | |
context for standard OpenJPA log impl | |
* [OPENJPA-37] - Support ant typedefs for OpenJPA tasks | |
* [OPENJPA-55] - Allow executeUpdate() invocations on native queries | |
* [OPENJPA-57] - persistence_1_0.xsd is missing | |
* [OPENJPA-63] - Better pessimistic lock support for DB2 v8.2+ | |
* [OPENJPA-151] - Added field in enhanced vesrion of a class is not | |
serialized. Hence the change in detached+serialized instances is not | |
registered under certain conditions. | |
* [OPENJPA-153] - WebSphere and non-jta-data-source and default | |
ManagedRuntime | |
* [OPENJPA-158] - OpenJPA logs overly-verbose at INFO level | |
* [OPENJPA-161] - Overuse of synchronization in AbstractBrokerFactory | |
* [OPENJPA-166] - Track the reason why a setRollbackOnly invocation | |
was made | |
* [OPENJPA-176] - Exception prefixes should be human-readable | |
* [OPENJPA-196] - Ease the restrictions on forcing a matche between | |
the number of declared and assigned positional parameters | |
New Features | |
Features added for release 0.9.7 | |
* [OPENJPA-92] - Support for H2 Database Engine | |
* [OPENJPA-93] - Sequence generation in a JTA environment should not | |
require non-JTA datasource | |
* [OPENJPA-94] - Allow MappingTool and persistence.xml to support | |
drop-create for database schema | |
* [OPENJPA-182] - db2 update lock syntax WITH USE AND KEEP UPDATE | |
LOCKS | |
Task | |
Tasks done for release 0.9.7 | |
* [OPENJPA-36] - Add cwiki url to incubator status page | |
Test | |
Additional testing done for release 0.9.7 | |
* [OPENJPA-40] - Testing OpenJPA and Spring integration fails | |
OpenJPA 1.0.0 Release Notes | |
Bugs fixed | |
* [OPENJPA-61] - Missing usage of TransactionSynchronizationRegistry | |
* [OPENJPA-86] - "uuid-hex" generator does not make affect in orm.xml | |
* [OPENJPA-143] - Problems with Single Table Inheritance Strategy (and | |
Discriminator Type of Integer) | |
* [OPENJPA-165] - QueryImpl.setFirstResult does not take already set | |
maxResults into account | |
* [OPENJPA-177] - When using NOT NULL constraint on foreign key it is | |
not possible to use CascadeType.ALL and GeneratedId | |
* [OPENJPA-199] - bulk update gets parsing exception trying to update | |
an attribute of an embedded class | |
* [OPENJPA-244] - Java 2 Security enablement | |
* [OPENJPA-248] - ForeignKey cascade delete action not working | |
* [OPENJPA-257] - Getter/Setter type inconsistency in Entity IdClass | |
* [OPENJPA-269] - Informix doesn't support subselects or using table | |
aliases in a delete statement. | |
* [OPENJPA-271] - DB2 missing JDBC driver 2 support | |
* [OPENJPA-272] - @GenerateValue (AUTO) doesn't work with Property | |
level access | |
* [OPENJPA-274] - JPQL queries cannot access version fields, including | |
bulk updates | |
* [OPENJPA-278] - OpenJPAQuery.getDataStoreActions() returns an empty | |
String array | |
* [OPENJPA-280] - Enhancement failure for inherited fields introduced | |
with change 532137 | |
* [OPENJPA-281] - EAGER not the default fetch type without the @Basic | |
annotation | |
* [OPENJPA-284] - TableJDBCSeq for GeneratedValue.TABLE did not handle | |
initialValue correctly | |
* [OPENJPA-285] - Multiple deploy/undeploy leaks memory in PCRegistry | |
* [OPENJPA-287] - Generated methods on superclasses are not visible to | |
subclasses | |
* [OPENJPA-294] - Exception while enchnancing the java classes using | |
OpenJPA PCEnhancerTask with build.xml | |
* [OPENJPA-296] - UUID algorithm generating non-unique values | |
sometimes | |
* [OPENJPA-304] - Problems with DepthFirstAnalysis and the IBM JDK | |
* [OPENJPA-308] - Postgres: bytea vs. oid handling in | |
PreparedStatement.setNull() calls | |
* [OPENJPA-311] - Problem loading classes with OSGi classloaders | |
* [OPENJPA-312] - derby fails with duplicate primary key(s) in group | |
by list | |
* [OPENJPA-313] - list of objects returned by query partially correct | |
* [OPENJPA-314] - Unenhanced complex id in MappedSuperclass causes NPE | |
* [OPENJPA-315] - Unenhanced generated id field of a primitive wrapper | |
type causes NPE | |
* [OPENJPA-320] - Do not use System Tables (SYS*) with DB2 | |
* [OPENJPA-321] - DB2 ABS Casting problem | |
* [OPENJPA-322] - Timezone on the Calendar object lost in proxying | |
* [OPENJPA-323] - Cleanup some message text | |
* [OPENJPA-256] - java.lang.ClassNotFoundException: | |
org.apache.openjpa.util.CacheMap in a jetty spring environment | |
Sub-task | |
* [OPENJPA-279] - Fixed missing lookup for non-jta-data-source in | |
JDBCConfigurationImpl. | |
* [OPENJPA-297] - Lazy loading must be ignored in certain unenhanced | |
cases | |
* [OPENJPA-298] - Miscellaneous documentation improvements | |
* [OPENJPA-299] - Provide a means to enable the old enhancing agent | |
Improvements | |
* [OPENJPA-259] - Ability to parse EJB QL multiline queries in orm.xml | |
* [OPENJPA-266] - Add Extensibility: Change "private" field/method to | |
"protected" or "public" in OpenJPA classes to be extendable | |
* [OPENJPA-275] - Bulk updates: version information should be | |
automatically maintained when the query does not | |
New Feature | |
* [OPENJPA-168] - sql optimize n rows query hint | |
* [OPENJPA-239] - Option for the reverse mapping tool to generate | |
mapping annotations | |
* [OPENJPA-262] - Event notification of BrokerFactory creation | |
* [OPENJPA-263] - Introducing getAll(List) method for data cache to be | |
called by loadAll() will allow data cache plug-ins to leverage the | |
advantage of any third-party cache that provides a way to get | |
multiple object in one call by providing a list of keys (oids). | |
* [OPENJPA-317] - API formalization pre-1.0 | |
OpenJPA 1.0.1 Release Notes | |
** Bug | |
* [OPENJPA-113] - when you specify columm table="empbean" in the xml file | |
entity id or basic type when empbean is the default table name, the | |
mapping tool generates extra foreign key field (eg.EmpBean_empid) in the | |
table produced. | |
* [OPENJPA-135] - join fetch not returning duplicate references which not | |
conforming to ejb3.0 spec | |
* [OPENJPA-209] - Query returning 2 entities w/unidir 1-1 relationship gets | |
openjpa.persistence.ArgumentException: Address with the same id already | |
exists in the L1 cache. | |
* [OPENJPA-210] - Query returning 2 entities w/1-1 relationship returns | |
wrong types in the result list | |
* [OPENJPA-211] - CLONE -java.lang.VerifyError on websphere 6.1 with Spring | |
2.0.3 and OpenJpa 0.96/0.97 | |
* [OPENJPA-251] - org.apache.openjpa.enhance.Reflection.getDeclaredMethod() | |
has undefined behavior, leading to VM-dependent crashes | |
* [OPENJPA-258] - MetaDataInheritanceComparator is not transitive; | |
C > B > A > C leads to out-of-memory crash in PCEnhancer | |
* [OPENJPA-282] - Postgresql does not support deferred unique constraints. | |
* [OPENJPA-295] - ArrayIndexOutofBoundsException when under load and within | |
a managed Transaction | |
* [OPENJPA-316] - Unenhanced OneToMany collection not loaded | |
* [OPENJPA-326] - NPE if a discriminator column is specified without | |
discriminator type in orm.xml | |
* [OPENJPA-329] - Generic interface may cause the openjpa Reflection code to | |
pickup the wrong getter method | |
* [OPENJPA-331] - Allow BigInteger and other Basic types as Primary Keys | |
* [OPENJPA-335] - Logic in getters for entities with property access causes | |
the PCEnhancer to hang | |
* [OPENJPA-339] - Java 2 security Access denied in File.toURL() call | |
* [OPENJPA-343] - Do not call setRollbackOnly on inactive Transactions | |
* [OPENJPA-346] - PCEnhancerAgent backwards-compatibility setting | |
overly-enables enhancement | |
* [OPENJPA-347] - Performance Issue with Lazy Loaded Foreign Keys | |
* [OPENJPA-353] - Character discriminators are not converted correctly if | |
storeCharsAsNumbers = true | |
* [OPENJPA-355] - OpenJPA Log4J factory incorrectly handles logging level | |
* [OPENJPA-356] - DB2 requires CASTs when parameters appear in SELECT clause | |
* [OPENJPA-357] - Use case where FetchGroup A includes FecthGroup B is not | |
honoured by fetch operations | |
* [OPENJPA-358] - Recursion Depth for Field f should be calculated w.r.t | |
active fetch groups and not all fetch groups | |
* [OPENJPA-360] - SQL FOR UPDATE OF incorrectly generated for DB2/NT SQL0816 | |
* [OPENJPA-361] - Incorrect GREG_OFFSET offset or inconsistent usage in | |
UUIDGenerator | |
* [OPENJPA-366] - InternalException thrown in BrokerImpl.endOperation | |
* [OPENJPA-367] - PCEnhancer does not find meta data for entities using pure | |
XML annotation | |
* [OPENJPA-368] - Multithreaded client fails randomly on | |
EntityManager.persist() with out transaction context. | |
* [OPENJPA-369] - AccessDeclaredMembers RuntimePermission requires by | |
Solaris JDK with security enabled | |
* [OPENJPA-372] - PCEnhancer throws away its classloader | |
* [OPENJPA-375] - DB2 autoCommit(true) causes Result Set prematurely closed | |
in WebContainer JEE environment. | |
* [OPENJPA-376] - Need more trace for transaction demarcation | |
* [OPENJPA-377] - RuntimeUnenhancedClasses support can go into a | |
"half baked" state | |
* [OPENJPA-378] - DB2 SQL incorrectly generating "FETCH FIRST n ROWS ONLY" | |
in subselects | |
* [OPENJPA-380] - Connecting to database when an unused emf is closed | |
* [OPENJPA-382] - Overriding column names for Byte[] attributes causes | |
exception. | |
* [OPENJPA-385] - IndexOutOfBounds exception when parsing ".class" files | |
* [OPENJPA-387] - Getting "java.lang.ClassNotFoundException" when loading | |
datacache plug-in which is a class outside of OpenJPA package. | |
* [OPENJPA-388] - MappingToolTask can't find persistence meta data. | |
* [OPENJPA-389] - em.getTransaction().commit() is not issuing database | |
commit for NativeQuery requesting updates | |
* [OPENJPA-394] - DB2 CAST VARCHAR type missing LENGTH | |
* [OPENJPA-395] - Accessing short Foreign Key metadata fields as ints causes | |
problems on iSeries | |
* [OPENJPA-396] - Cloning Calendar proxies doesn't detach from StateManager | |
* [OPENJPA-397] - schematool ant task always requires files | |
* [OPENJPA-401] - UnsatisfiedLinkError in MappingToolTask when using DB2 | |
JDBC driver | |
* [OPENJPA-402] - Unable to detect an valid Entity's meta data when the | |
entity's .class file size is large. | |
* [OPENJPA-403] - LoadFetchGroup patch (OPENJPA-370) introduces NPE | |
* [OPENJPA-405] - need extract space in the message text | |
* [OPENJPA-409] - Quick message updates | |
* [OPENJPA-410] - Change "connecting to dictionary" message from Info to | |
Trace | |
* [OPENJPA-413] - Fix some message text in the localizer.properties files | |
* [OPENJPA-415] - Garbage collection of AbstractResultList instance closes | |
active connection | |
* [OPENJPA-416] - Unclear exception if an unknown external value is used | |
* [OPENJPA-420] - JPQL constructor query close the <SELECT DISTINCT> | |
feature? | |
* [OPENJPA-421] - OpenJPA generates bad SQL before configuration fully | |
populated | |
* [OPENJPA-422] - Calendar objects contained in a detached Entity still have | |
a "live" StateManagerImpl | |
* [OPENJPA-423] - Deadlock victim exception getting sequence value with | |
SQLServer | |
** Sub-task | |
* [OPENJPA-309] - CTS passing in at least JDK6 | |
* [OPENJPA-408] - Improve error processing for | |
openjpa.RuntimeUnenhancedClasses property settings | |
** Improvement | |
* [OPENJPA-338] - Remove unnecessary CAST in SQL statement for DB2 | |