| 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.2 and the |
| preceding releases. 1.0 is the first major 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 1.0.2 Release Notes |
| |
| Bugs |
| |
| * [OPENJPA-135] - join fetch not returning duplicate references which not conforming to ejb3.0 spec |
| * [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-322] - Timezone on the Calendar object lost in proxying |
| * [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-366] - InternalException thrown in BrokerImpl.endOperation |
| * [OPENJPA-367] - PCEnhancer does not find meta data for entities using pure XML annotation |
| * [OPENJPA-370] - LoadFetchGroup annotation was not recognized during the fetch1 |
| * [OPENJPA-401] - UnsatisfiedLinkError in MappingToolTask when using DB2 JDBC driver |
| * [OPENJPA-419] - Merging graphs that include managed instances fails |
| * [OPENJPA-420] - JPQL constructor query close the <SELECT DISTINCT> feature? |
| * [OPENJPA-437] - EntityManagerFactory is not thread-safe |
| * [OPENJPA-446] - Problem when setting String fields of detached objects |
| * [OPENJPA-447] - Query pagination broken for non-DB2 databases |
| * [OPENJPA-452] - Error in the XML equivalent in the "secondary table field mapping" example |
| * [OPENJPA-471] - iSeries DB2 problem with using @GeneratedValue(strategy=GenerationType.IDENTITY) |
| * [OPENJPA-472] - iSeries DB2 problem with using @GeneratedValue(strategy=GenerationType.SEQUENCE ...) |
| * [OPENJPA-476] - Query.setFirstResult and Query.setMaxResults don't take effect |
| * [OPENJPA-506] - PreRemove method callback is never called; PreUpdate is always called |
| * [OPENJPA-508] - JPQL EXISTS clauses do not handle subclasses properly |
| * [OPENJPA-511] - Unable to execute native queries which start with the WITH keyword. |
| |
| OpenJPA 1.0.1 Release Notes |
| |
| Bugs Fixed |
| |
| * [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-282] - Postgresql does not support deferred unique constraints. |
| * [OPENJPA-295] - ArrayIndexOutofBoundsException when under load and within a managed Transaction |
| * [OPENJPA-326] - NPE if a discriminator column is specified without discriminator type in orm.xml |
| * [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-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-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-399] - openjpa did not handle multiple schema names with same table name |
| * [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-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 |
| |
| Improvements |
| |
| * [OPENJPA-338] - Remove unnecessary CAST in SQL statement for DB2 |
| |
| Sub-tasks |
| |
| * [OPENJPA-408] - Improve error processing for openjpa.RuntimeUnenhancedClasses property settings |
| |
| |
| 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 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 |
| |