blob: de76446c3e19fc2f5f4e35de560287e33b024155 [file] [log] [blame]
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.0 and the
preceding releases, 0.9.6 and 0.9.7. 1.0.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 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