Oracle® Application Server TopLink

Release Notes

10 g ( / 10 g Release 2 (10.1.2)

July 2005

This document describes the changes introduced in Oracle Application Server TopLink. Changes in this release can be applied over previous versions of both OracleAS TopLink 10 g (9.0.4.x) and 10 g Release 2 (10.1.2).

This document specifically discusses:


This document applies to all supported platforms. All file paths and script names are identical on all platforms. By default, this document uses the Windows file path separator (  \ ). Substitute the file path separator appropriate for your platform as required.

1 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 1 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 2 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 1  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


When updating an object in OracleAS TopLink and using an event, for example, aboutToLoad, to modify the columns in the SQL UPDATE, OracleAS TopLink no longer adds the column to the SQL output multiple times. In previous versions, the column sometimes appeared twice in the SQL output. This resulted in a SQLException when the SQL was executed.


Parameterized batch writing has been further optimized when writing objects that use multiple tables or inheritance. As a result, the number of batches that are sent has been optimized.


In rare cases, it was possible that disconnecting from a session and then logging back in caused the reconnection to fail. This happened when statement caching and external connection pooling was used and was called prior to the initial logout.


When using OracleAS TopLink on BEA WebLogic in highly concurrent environments, OracleAS TopLink no longer returns a WebLogic wrapper object when a OneToManyMapping is crossed. In previous versions, depending on the JVM, OracleAS TopLink sometimes returned the wrapped object resulting in an IllegalArgumentException.

4378539, 4395860, 4395841, 4309144

An unusual condition where OracleAS TopLink inserted an object twice when a UnitOfWork was committed has been resolved. This condition occurred when using a VariableOneToOneMapping to reference an object that was also referenced with a OneToOneMapping and the object model was structured in such a way that the constraints on the OneToOneMapping caused the insert based on the VariableOneToOneMapping to be processed first.


The introduction of newer versions of the Oracle JDBC driver caused the oracle.sql.TIMESTAMPTZ not to be serializable. As a result, this caused issues when using ValueHolders. The addition of serialization logic to the way OracleAS TopLink handles oracle.sql.TIMESTAMPTZ no longer causes issues when using ValueHolders.


Cache synchronization has been optimized to reduce the number of objects that are sent to other servers. In previous versions, any object registered in a UnitOfWork was sent by cache synchronization. In this release, only changed objects and objects required by those changed objects are sent.


In this release OracleAS TopLink now provides the getTranslatedSQLStrings(Session session, DatabaseRow translationRow), getSQLStrings() and getCalls() API to DatabaseQuery for use with multiple-call queries. In this release, the corresponding single-call query methods was also amended in order to avoid throwing NullPointerExceptions when called on multiple call queries.


OracleAS TopLink now correctly reads the <is-asynchronous> tag from the sessions.xml file that describes the OracleAS TopLink cache synchronization. In previous versions, this flag was not correctly read, resulting in all cache synchronization configured in the sessions.xml file to be asynchronous.


In this release it is now possible to set a new collection into an already existing relationship that uses transparent indirection and have the changes discovered by OracleAS TopLink. In previous versions, this could result in a NullPointerException and it was necessary to manipulate the already existing collection.


Enabling bidirectional relationship maintenance on the back pointer side of a one-to-many mapping using a Transparent map no longer results in ClassCastExceptions. In previous versions, this configuration could result in ClassCastExceptions when objects were modified.

2 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 3 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 4 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 3  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


Rolling back a JTA transaction now disassociates the JTA transaction from the current thread. In previous versions, calling rollback and then starting a new transaction resulted in exceptions that indicated that a nested transaction was being started.


Outer joins across many-to-many mappings on database platforms that require outer join syntax in the FROM clause of the SQL now work correctly. In previous versions, the generated SQL did not correctly include the outer join in the SQL. This potentially resulted in SQLExceptions. An example of a platform where this was an issue was IBM DB2.


JMS cache synchronization now correctly uses the provided username and password when creating a cache synchronization connection. In previous versions, the username and password were not used for the connection.


A DataModifyQuery can now be executed in a SessionEvent or DescriptorEvent inside a transaction. In previous versions, a DataModifyQuery that executed either type of event during a transaction sometimes caused the transaction to rollback.


A race condition that could cause a ConcurrentModificationException no longer exists on RemoteSession. In previous versions, when using transparent indirection and a RemoteSession, albeit in rare cases, a ConcurrentModificationException could be generated when the indirection was triggered.


When a UnitOfWork.mergeCloneWithReferences() causes a collection to be merged and the collection contains a null value, the null will now be ignored. In previous versions, a NullPointerException was thrown.


A race condition that could cause a NullPointerException no longer exists on RemoteSession. In previous versions, using indirection and a RemoteSession, sometimes generated a NullPointerException when indirection was triggered.


Executing a query that binds a null parameter no longer throws a NullPointerException.


A temporary session variable called session in ForeignReferenceMapping has been renamed to avoid confusion with other non-temporary session variables.


If empty objects are placed in the cache of a remote session as a result of code written in a SessionEvent or DescriptorEvent they are no longer returned in queries. In previous versions, if erroneous code was written, resulting in empty objects being placed in the cache during an event, those objects could be returned in queries.


API has been added to ModifyQuery to increase control of batch writing. The following is a description of the API: void setForceBatchStatementExecution(boolean value)

Allow setting this query to be the last statement added to a batch statement and ensure it is flushed on execution. Setting to True will cause the batch statement to be sent to the database. Default setting of False causes the delay of the batch statement execution. This allows additional statements to be added. Setting to True reduces the efficiency of batch writing. This has no effect if batch writing is not enabled.


The UnitOfWork.revertAndResume() no longer adds duplicate objects to collections when used with bidirectional relationship maintenance and large sets of objects. In previous versions, an intermittent problem existed that caused extra duplicate objects to be added to one-to-many collections with bidirectional relationship maintenance enabled.

Table 4  Resolved Issues for the OracleAS TopLink Mapping Workbench

Reference NumberDescription


Refreshing a class in OracleAS TopLink Mapping Workbench no longer unselects it from the list of implementors in its related Interface descriptor. In some cases, a refresh of a class caused the related implementor in the Interface descriptor to become unchecked.


In previous versions, using the external JavaSourceGenerator sometimes produced incorrect deployment for aggregate mappings. In this release, Project Java Source generated by the JavaSourceGenerator now correctly matches the Project Java Source generated from inside OracleAS TopLink Mapping Workbench.


In this release, the external JavaSourceGenerator now correctly terminates after successful project generation. In previous versions, the JavaSourceGenerator could hang after successful project generation.

3 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 5 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 6 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 5  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


When the target of a One-to-one mapping is set to an object that does not have a OracleAS TopLink descriptor, but inherits from an object with a OracleAS TopLink descriptor, OracleAS TopLink no longer throws a stack overflow exception.


The descriptor is now included in all relevant DescriptorEvents. In previous versions, certain descriptor events, for example as in the case of preDelete, did not have the descriptor included when raised.


Introduced OracleAS TopLink 10 g (, OracleAS TopLink no longer appends duplicate fields to SQL when executing a query that includes mapping-level-joining.


OracleAS TopLink no longer throws a ConcurrentModification exception when it reverts a Unit of Work where a shared collection has been updated by another thread.


Concurrency fixes have been made to both the OracleAS TopLink JCEEncryptor's encryption and decryption algorithms. In previous versions, an ArrayOutOfBounds exception occurred under high degrees of concurrency. This issue occurred when using the IBM WebSphere application server external connection pooling.


Eliminated a dependency on the order of the external-connection-pool and non-jts-datasource tags in sessions xml file. In previous versions, if the external-connection-pool tag was incorrectly listed after the non-jts-datasource tag, the external connection pool would not be correctly set up. This resulted in potential concurrency issues due to the fact the connection pool was not used by OracleAS TopLink.


The deployment XML with the query-should-maintain-cache setting set to undefined is once again loaded by OracleAS TopLink. As a result of changes introduced in bugs 3909343/3845361/ 3476483, using OracleAS TopLink 10 g ( to load a deployment XML file generated in a previous version resulted in a SessionLoaderException. The undefined setting is now interpreted correctly.


OracleAS TopLink now correctly inserts an empty string into a column of type NClob on Oracle platforms. In previous versions, a space was inserted instead of the empty string


In-Memory queries across a direct query key that points to an attribute of an aggregate now work correctly. In previous versions, expressions with comparisons to the direct query key always returned as false.


An ArrayIndexOutOfBoundsException is no longer thrown when the database type TIMESTAMPTZ is mapped to a Java Calendar type and the session timezone is not set on the database.


Queries with multiple order-by expressions that reference a column of the same name no longer result in the table referenced by one of the expressions being excluded from the FROM clause of the generated SQL. In previous versions, this resulted in a SQLException that indicated the ordering clause was not a selected expression.


Sequencing now works correctly in the Unit of Work when inserting objects with primary keys mapped as aggregate objects when they are held in an AggregateCollectionMapping. In previous versions, the sequencing numbers were not assigned.


Acquiring a ClientSession from a session broker no longer results in duplicate read-only classes being added to the session broker. In previous versions, this resulted in an increase of in memory usage each time a client session was acquired.


In-memory queries that use the LIKE operator now correctly match characters that are reserved in the Java regular expression library. The following characters can now be matched: ?*.[)({+^|


This release includes improvements to the expression framework when doing comparisons with mapped objects. For example:

A and B are mapped objects with a bidirectional one-to-one mapping between them. The mapping is defined as A having a foreign key bid that maps to B's ID.

The follow two scenarios now work:

A.get("b").equal(myB); // This scenario now gets a cache hit.

B.get("a").equal(myA); // This scenario no longer gets a ConversionException.


It is now possible to update an Aggregate object in an aboutToUpdate or aboutToInsert event in the OracleAS TopLink event framework using the DescriptorEvent.updateAttributeWithObject(attributeName, aggregateObject) method. In previous versions, this method was incompatible with Aggregate objects and using it would not result in SQL being generated for aggregates.


Oracle9Platform now calls SYSDATE when expressionBuilder.currentDate() is called. In previous versions it would return SYSTIMESTAMP.

4 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 7 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 8 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 7  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription

3909343/3845361/ 3476483

Introduced changes to the way cache maintenance settings are managed.

In OracleAS TopLink, the resolution of bug 3240668 resulted in the DatabaseQuery's shouldMaintaineCache setting adding an Undefined setting. When the shouldMaintainCache was set to undefined, the query would use the Descriptor's disable cache hits setting to determine whether to access the cache.

The shouldMaintainCacheSetting no longer includes this change. It is a simple boolean.

Instead, we have added to the ObjectLevelReadQuery a UseDescriptorSetting setting for cache usage. When an ObjectLevelReadQuery is set to UseDescriptorSetting, it verifies the descriptor's disableCacheHits setting to confirm whether it should make use of the cache.

UseDescriptorSetting is the new default. Customers that use a combination of the default cache usage for ObjectLevelReadQuerys and Descriptor.disableCache hits will encounter less cache hits.

Customers that rely on the DatabaseQuery's default shouldMaintainCache setting to allow a descriptor's disableCacheHits setting to be used will encounter more cache hits.


If a JDBC connection is dropped during a database transaction, a DatabaseException is now thrown on the next access to the database. In previous versions, OracleAS TopLink automatically tried to reconnect. This sometimes caused problems for users of connection pools in that it was impossible to guarantee the same connection was acquired. To avoid this issue, implementations that require reconnection functionality should use the OracleAS TopLink error handling framework.


The OracleAS TopLink expression framework now supports expressions of the form expression.equal(objectA) where objectA is a Java Dynamic Proxy object returned from a OracleAS TopLink query. In previous versions, OracleAS TopLink would throw a QueryException when executing a query with an expression of this kind.


Queries that make use of a Read All Subclasses View, joined attributes, and no selection criteria now generate the correct SQL. In previous versions, OracleAS TopLink did not generate the correct table aliases for the joined tables and a SQLException was thrown.


In this release, OracleAS TopLink provides support for BEA WebLogic Application Server 8.1 Service Pack 3.


In a Unit of Work set to PerformDeletesFirst, update statements are no longer issued for objects that have been both updated and deleted. In previous versions, this configuration resulted in unnecessary update statements being issued after the objects had been deleted.


OracleAS TopLink now supports binding the list of values provided in an expression using the 'in' operator. In previous versions, queries that used the 'in' operator could not bind the list used for the 'in'.To make use of this change, call either shouldPrepare(boolean) or shouldBindAllParameters(boolean) on the query with 'false' as the argument and set cascadeAllParts to true on the query.


Sequencing now works correctly when the field sequenced is of type BigInteger. In previous versions, for extremely large values, OracleAS TopLink called the BigInteger.longValue() method which on occasion returned a negative number for extremely large numbers. This in turn resulted in a ValidationException indicating that the sequence was incorrectly setup.


OracleAS TopLink now correctly inserts data into columns of type CLOB when using a TypeConversionMapping and batch writing. In previous versions, the CLOB column was ignored when the insert statement was built.


Queries that make use of a Read All Subclasses View, an 'order by' expression, and no selection criteria now generate the correct SQL. In previous versions, OracleAS TopLink did not generate the correct table aliases and a SQLException was thrown.


SessionBroker now uses the DatabasePlatform from it's individual sessions when accessing the database. In previous versions, certain calls such as LOB access used the SessionBroker's own database platform rather than the one associated with the appropriate session.


In EJB 2.0 when a bean inherits an attribute and its accessor methods from an unmapped java class, and maps that attribute, OracleAS TopLink no longer throws an exception at deploy time. In previous versions, this configuration resulted in a NullPointerException at deploy time.


The UnitOfWork.getQuery(name) now returns the correct value. In previous versions, a ClassCastException was thrown when executing this method.


In this release, the resolution of bug 2767951 in OracleAS TopLink 10 g (9.0.4) has been further enhanced. Users can now specify a username and password in the sessions.xml file. The username and password can either include a value or be empty. In previous versions, OracleAS TopLink did not use the username and password included in the sessions.xml and deployment.xml files for external connection pool login. This caused issues for users of application servers that actually required the username and password.


OracleAS TopLink no longer throws a NullPointerException when it executes a query that includes an aggregate or join to an object that has an attribute of the same name as an attribute in the parent.


The SessionAccessor.registerOrMergeObject() method now verifies the corresponding descriptor's existence checking settings. In previous versions, this method would go to the database for existence checking. This potentially resulted in extra SQL.

5 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 9 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 10 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 9  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


The following issue was fixed in and was recently determined to have solved the known issue related to multiple levels of joining.

When descriptors use joining at multiple levels, OracleAS TopLink no longer returns objects beyond the second level as null.

For example, consider an object model with A mapped to B with a one-to-one mapping and B mapped to C with a one-to-one mapping. Previously, if both mappings used joining and a query had been executed to read A, C would have been returned as null.

3698046, 3602526

Oracle database types TIMESTAMPTZ and TIMESTAMPLTZ are now supported when used with binding with DirectToFieldMapping and TypeConversionMapping. In previous versions, incorrect data could be returned to fields of these types when they were used with any configuration except native SQL combined with TypeConversionMapping.

Note: When mapping to a field of type Calendar, and using non-native SQL, OracleAS TopLink assumes that time data is for the local timezone since the timezone information is not available through non-native SQL.

3691533, 3568141

The option to use an InMemoryQueryIndirectionPolicy to trigger indirection for conforming queries has been reinstated. In a previous version (bug 2637555) the option of using this was removed in favor of an improved means of running conforming queries.

Note: Oracle does not recommend using the trigger indirection setting.


Session broker now supports cache synchronization. In previous version cache synchronization did not properly initialize when a session broker was logged in.

3679259, 3522829

When an RMI-based clustering service is shut down, the associated remote objects are now unexported. This allows the VM to collect its garbage correctly and shutdown properly.

3676472, 3679697

OracleAS TopLink no longer throws a NullPointerException when using cache synchronization and a new object set to store it's optimistic locking version field in the object is merged into a remote cache.

3645128, 3635694

Parameterized batch statements now work more cleanly. In previous versions, parameterized statements were not properly retrieved from the cache, and duplicate statements were not properly closed. This resulted in a large number of open statements and in reduced efficiency of batch writing.


An issue introduced in OracleAS TopLink related to subqueries in conjunction with objects involved in inheritance and the Read Subclasses on Query option has been corrected. In previous versions, a QueryException indicating an invalid query key would be thrown when a subquery was executed across a relationship where the target was involved in inheritance and Read Subclasses on Query was selected.


DatabaseExceptions that contain SQLExceptions indicating an issue with the database connection now contain a reference to the involved session. This information is useful for reconnection. In previous versions, the session was not always included with these exceptions.


Reading objects in a bidirectional one to one relationship without indirection and with the descriptor settings should-always-refresh-cache and should-disable-cache-hits no longer causes an infinite loop.

3608082, 3597197

OracleAS TopLink no longer throws a QueryException when running a ReportQuery that includes objects with similarly named attributes. In previous versions, if an object was related to another object and they both had attributes with the same name, a ReportQuery could throw a QueryException if the objects were separated by at least one level.

For example, the following object model that could cause this situation:

Class A

  int id
  B b
  string name

Class B

  int bid
  C c

Class C

  int cid
  string name

Note: This would not occur if the attribute called name was found in class B.


Relationships are no longer updated unnecessarily when the target is changed such that oldTarget.equals(newTarget). In previous versions, when the target object in a relationship was changed to another object with the same identity, the foreign key would be updated even though the relationship had not actually changed.

Note: This would not result in a change to the actual data since the foreign key would be updated to the same value.


OracleAS TopLink no longer throws UntriggeredValueholder exceptions on conforming queries. This functionality is obsolete since the settings that would result in an UntriggeredValueholderException are no longer used.


OracleAS TopLink no longer throws a ClassCastException when updating an aggregate, where the aggregate has a field named the same as the containing object.

For example, the following scenario will now operate correctly:Class A has attributes id, description, bDescription. Class B is an aggregate of A containing a field called description which is mapped to bDescription in A. When an update occurred to either description or bDescription, OracleAS TopLink would throw a ClassCastException.

Table 10  Resolved Issues for the OracleAS TopLink Mapping Workbench

Reference NumberDescription


When migrating a 9.0.3.x project to 9.0.4.x with a broken MWClass reference, OracleAS TopLink no longer generates a 101 error.


Problems deploying OracleAS TopLink Mapping Workbench projects with missing project classes on the classpath have been corrected. In previous versions, the OracleAS TopLink Mapping Workbench could throw exceptions if project classes could not be fully resolved on the classpath. Missing classes now correctly appear in a dialog when they can not be loaded.


OracleAS TopLink Mapping Workbench no longer incorrectly removes inherited mappings when you rename a descriptor.


When you remove a mapping for a given inherited attribute, OracleAS TopLink no longer removes other inherited mappings in the hierarchy that are mapped to that same attribute.


Projects with incorrectly configured variable one-to-one mappings no longer cause NullPointerExceptions when deploying the project. In previous versions, variable one-to-one mappings which included class indicators that had no indicator value would cause an exception during deployment.

6 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 11 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 12 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 11  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


Executing queries with parameters on a session broker no longer throws a QueryException indicating that the query is not defined.


Stored procedure calls now function correctly when there is both an argument containing a Cursor and another OUT or INOUT parameter. In previous versions, this would produce incorrectly formatted SQL.


OracleAS TopLink expression framework has been enhanced to include a caseStatement operator that supports the SQL CASE function. The case function works much like the already existing decode function. A hashtable containing the values for the case statement is provided as an argument along with the default value. For example:

Hashtable caseTable = new Hashtable();
caseTable.put("Robert", "Bob");
caseTable.put("Susan", "Sue");
employee.get("name").caseStatement(caseTable, "No-Nickname")
 SQL: CASE name WHEN "Robert" THEN "Bob"
 WHEN "Susan" THEN "Sue"
 ELSE "No-Nickname"

Note: You can use the caseStatement operator with any OracleAS TopLink supported JDBC driver and database that supports the SQL CASE function. With respect to Oracle specifically, the SQL CASE function is supported in Oracle9 i Database Server and above.


Direct mappings on aggregates can now be resolved in in-memory queries. In previous versions, depending on the OracleAS TopLink setup, either the expression that traversed the aggregate was ignored, or an exception indicating that the functionality was not supported was thrown.

Note: Calling the Expression.ifNull() method with an aggregate as the target is now supported in-memory, but not for queries that go to the database.

3530368, 3482901

Start-up negotiation for RMI-IIOP cache synchronization on IBM WebSphere and for RMI cache synchronization on BEA Weblogic now works correctly. In previous versions, exceptions were thrown during the initialization. This issue was introduced as a result of the bug fix for bug 3294426 in OracleAS TopLink


In a UnitOfWork that is nested more than once, calling registerObject() on an object that is new in a UnitOfWork above the immediate parent no longer returns null. In previous versions, if a UnitOfWork was nested more than one level, the lower level UnitOfWork would only look in their immediate parent for new objects. They now look in all parents.


Support for functions Expression.length(), ExpressionMath.ceil(), and ExpressionMath.mod() have been upgraded to include support for SQL Server platforms.


When using cache synchronization, time-to-live settings are now correctly used to determine when packets time-out. In previous versions, time-out was always the default.


When a descriptor event is used to alter an object, OracleAS TopLink now includes changed attributes in the change set associated with the update even if the attributes were not previously changed. In previous versions, attributes that were newly changed in the descriptor event were not included in the change set.


A registerNewObject() on a new RemoteSession now succeeds. In previous versions, remoteSession.registerNewObject() threw a NullPointerException if it was executed as the first operation on a new unit of work on a RemoteSession.

3473441, 3494782

Calling getQuery on SessionBroker now succeeds. In previous versions, OracleAS TopLink would throw a ClassCastException when sessionBroker.getQuery() was called.


OracleAS TopLink JMS cache synchronization now works in IBM WebSphere 5.1. In previous versions, JMS cache synchronization was designed to extend the Thread class. This was not allowed in IBM WebSphere 5.1.


OracleAS TopLinkno longer throws a NullPointerException on insert when using optimistic locking and storing the version field in an aggregate.


Cache synchronization no longer fails when a ServerSession has its login method called multiple times. In previous versions, a call to login would automatically result in cache synchronization initialization this could cause issues if cache synchronization was already initialized.


OracleAS TopLink now properly closes cursors returned from stored procedures. In previous versions, the cursors were not always closed. This could eventually result in exceptions indicating too many open cursors.

3400625, 3497602

An application name can now be specified on a pre-login event to allow start-up negotiation for RMI-JNDI cache synchronization on Oracle Application Server Containers for J2EE to succeed. The following is an example of a pre-login event that can be specified to allow this to succeed.

public void preLogin(SessionEvent event){
   event.getSession().getCacheSynchronizationManager().getClusteringService().setApplicationName( "/ejbSessionBean");


A race-condition associated with two threads executing the same query using the onlyRefreshIfNewerVersion setting has been eliminated. This issue occurred when the query produced a result with two objects involved in a relationship without indirection. In some cases, this race-condition caused a deadlock.


DescriptorQueryManager.addQuery() has been modified to replace identical already-existing queries. In previous versions a query would be added regardless of whether there was already a query with the same name and arguments. This could result in two different queries with identical names and arguments being stored in the same DescriptorQueryManager leading to unexpected behavior.

3338862, 3345103

JMS messaging has been fixed to deal better with null objects. In previous versions, messages including null objects would result in NullPointerExceptions. This resulted in potential problems when setting up cache synchronization.

7 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 13 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 14 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

8 Resolved Issues in 10 g (

This section describes resolved issues in this release.

  • Table 15 lists the resolved issues for the OracleAS TopLink Foundation Library and CMP support.

  • Table 16 lists the resolved issues for the OracleAS TopLink Mapping Workbench.

Table 15  Resolved Issues for the OracleAS TopLink Foundation and CMP Support   

Reference NumberDescription


OracleAS TopLink now provides a JTA implementation for WebSphere 5.1. For more information.


If the same query is added to the DescriptorQueryManager using the descriptorQueryManager.addQuery() method, it replaces the query rather than add it a second time. A query is determined to be the same if it is  .equal to the query it is being compared to.

3324677, 2992647

When using CMP and inheritance, finders defined in the Home interface for the superclass are now correctly generated in the code for subclasses. Previous versions threw an exception at deployment time because the finder did not exist.


Setting OracleAS TopLink to use the non-change-set commit process with oracle.toplink.publicinterface. session.setUsesOldCommit() no longer throws a NullPointerException when committing a JTS transaction.


Startup negotiation for cache synchronization when using CORBA now succeeds. Previous versions threw a marshalling exception during the discovery phase of startup.


Binding parameters that include non-ASCII characters now function correctly. Previous versions incorrectly replaced non-ASCII characters.

3267297, 3142898

When descriptors are set to use joining at multiple levels, OracleAS TopLink no longer returns objects beyond the second level as null.

For example, consider an object model with A mapped to B with a one-to-one mapping and B mapped to C with a one-to-one mapping. Previously, if both mappings had been set to use joining and a query had been executed to read A and C would have been returned as null.


OracleAS TopLink now supports BEA WebLogic 7.0, Service Pack 4.

3250752, 3078039

Creation of sessions has been optimized to reduce the number of descriptor aliases that are added. You will experience performance improvements when creating ClientSessions for projects with large numbers of descriptors.

3250154, 3145211

Remote session has been optimized to serialize less data. In previous versions, foreign reference mappings using indirection could serialize extra data when the indirection had been triggered on the server session and the original object was read on the remote session.


Custom queries set on a descriptor's QueryManager now use redirectors. Previous versions did not call the redirectors for those queries.


In ShouldMaintainCache settings for DatabaseQueries, OracleAS TopLink now provides the following settings:

  • Undefined (Default) – OracleAS TopLink checks the descriptor for the cache maintenance settings.

  • True – Queries maintain cache, regardless of the descriptor setting.

  • False – Queries do not maintain cache, regardless of the descriptor setting.

See 3432075 in Table 11 for more information.


When using a readAllSubclassesView with an inheritance query, options such as order-by and joined attributes are now included in the readAllQuery. Previous versions ignored these settings.

3235493, 3235485, 3235472, 3235458

Optimizations have been made to OracleAS TopLink support for BEA WebLogic (6.1 SP5, 7.0 SP4). Beans are no longer registered in a Unit of Work when they are invoked outside the context of a user transaction. In such occurrences, you must ensure that the beans not be modified since they are instances from the shared cache.


OracleAS TopLink now supports using a java.util.Comparator with a java.util.SortedSet. In previous versions, using this combination caused a ClassCastException during the Unit of Work commit.

3221899, 3195064

OracleAS TopLink now supports ANTLR library versions 2.7.0 and 2.7.2. Previous versions supported only version 2.7.0.


The default size for parameterized batch writing is now 100. In previous versions, the larger default could cause an OutOfMemoryException.

3197630, 3183379, 3233534, 3228185, 3124078, 3115160, 3137024, 3132979

Improvements have been made to nested UnitOfWorks. When using NestedUnitOfWorks, new objects are no longer returned twice in ReadAllQueries.

Previously, if a new object was registered in a nested Unit of Work and the nested Unit of Work was committed, a conforming ReadAllQuery in a new nested Unit of Work returned two instances of the same new object.

If new objects are added as the target of a one-to-many mapping in a parent Unit of Work and then removed in a nested Unit of Work, the remove now occurs correctly.

When creating an object and deleting it in the nested Unit of Work, OracleAS TopLink now correctly unregisters the object.


Expressions represented in generated project classes now have correct type associated with constants. In previous versions, constants were always represented as Strings even if they were simple number types.

3156963, 3140645, 3009944

OracleAS TopLink CMP no longer generates errors when compiling with BEA WebLogic 6.1 Service Pack 5. In previous versions, changes to the BEA WebLogic behavior in service pack 5 resulted in compilation problems when running ejbc.

3147183, 3256419

Unnecessary logging was removed from code used with direct map mappings. Previous versions generated extra logging information when adding items to direct map mappings that use batch reading.

3146923, 3094912

Improved the concurrency related code used when acquiring locks from identity maps.

3145262, 3130977

Server session no longer uses an exclusive read connection pool by default. A non-exclusive pool is now the default.

3144849, 3136413

Queries that use query by example and the conformResultsInUnitOfWork() method now return objects that are new in the Unit of Work. In previous versions, such queries did not return new objects in a Unit of Work.

3143156, 3080499

Optimistic Locking now works correctly for CMP 2.0 entity beans using inheritance. In previous versions, a descriptor exception occurred when trying to get the version field.

3143120, 3113540

When using CMP Entity Beans and Cache Synchronization, a NullPointerException no longer occurs when CMP entity beans are loaded on a remote server. In previous versions, a NullPointerException was thrown as result of a missing EntityContext.

3142715, 3095146

Getting a cache key from a WeakIdentityMap no longer returns null when the object is being built.

In previous versions, if two threads were reading an object for the first time simultaneously, a small period of time existed when the cache key was created and was not populated. This could potentially result in identity issues.

3142502, 3061144

Added support for the ifNull() operation on OracleAS TopLink expressions for Sybase and Microsoft SQL Server databases.

3140835, 2612164

Deployment XML generated by the Mapping Workbench now includes information about the type of a default null value.

In previous versions, XML reading assumed that the default null value's type was java.lang.String. NULL was not written to the database when an attribute of a type other than java.lang.String with the default null value was persisted.

3134653, 3126262

Enhanced the performance of batch queries which simultaneously use batch reading in multiple threads to read the same objects. In previous versions, commit would result in the object being inserted.


OracleAS TopLink sequencing now avoids a situation which could cause the database to throw an exception indicating a deadlock has occurred.

In previous versions, if many threads accessed a SEQUENCE table and sequence preallocation size was greater than one, the quantity of threads waiting to access the SEQUENCE table could cause the database to indicate a deadlock.


Resolved a concurrency issue in multithreaded systems when one thread is inserting a new object and relating it to an existing object and another thread is refreshing the existing object at the same time. In previous versions, a short period of time existed where a deadlock could occur.


SQL will now be rebuilt for preexisting queries that have the follow settings altered on them.

  • All queries: shouldBindAllParameters, shouldCacheStatement, shouldPrepare

  • ReadQuery: maxRows

  • ObjectLevelReadQuery: referenceClass, lockMode

  • ReadAllQuery: containterPolicy, hierarchicalQueryClause

  • ReadObjectQuery: selectionKey, selectionObject


A concurrency issue no longer occurs when one thread registers the same object as two other threads refresh at the same time. In previous versions, although in extremely rare cases, this situation resulted in a deadlock.


When reconnecting a session, the cache of statements is flushed. In previous versions if a connection had to be reconnected because it was dropped, the statement cache was not flushed, possibly causing SQLExceptions.

Table 16  Resolved Issues for the OracleAS TopLink Mapping Workbench

Reference NumberDescription


OracleAS TopLink now maps the database types DATE and DATETIME to java.util.Calendar for descriptor generation. In previous versions, DATE and DATETIME types were mapped to java.sql.Date.


When generating Java source, if users cancel the source code generation process to prevent overwriting existing source code, an incorrect dialog stating that source code was overwritten will no longer display.


Context sensitive help correctly displays the Named Queries help information when users request help from the panel. In previous versions, the general Queries help was displayed.


Problems writing the primary key field in the ejb-jar.xml have been corrected. Following is a detailed description of the problem that was corrected:

For an EJB 2.0 CMP bean descriptor, if the descriptor has more than one mapping to its primary key (database) field, and the correct one (direct to field) occurs before the incorrect one (for example, a one-to-one using the PK as a foreign key), the <primary-key-field> was not written out in the ejb-jar.xml.


An erroneous error message regarding invalid query keys on variable one-to-one mappings has been corrected.


Problems encountered when refreshing interface descriptors have been corrected. In previous versions, a ClassNotFoundException was displayed in certain circumstances.


Java types java.sql.Blob and java.sql.Clob are now available, where applicable, for mapping to LOB data types.


A problem when migrating from 9.0.3.x to 9.0.4 has been corrected. The issue corrected can be identified by the following error text:


Exception Description: The method [isStub] on the object [oracle.toplink.workbench.model.meta.MWClass] triggered an exception.


A problem when migrating from 9.0.3.x to 9.0.4 has been corrected. The issue corrected can be identified by the following error text:

TopLink Error Code:98

Error Message:
Exception Description: The underlying callback method [legacy45PostBuild], with parameter (DescriptorEvent), triggered  an exception:
Internal Exception: java.lang.reflect.InvocationTargetException
Target Invocation Exception: java.lang.NullPointerException
XMLDescriptor(oracle.toplink.workbench.model.meta.MWMethod--> [DatabaseTable(Method)])


When using OracleAS TopLink Mapping Workbench with Oracle Database 10 g, select Oracle9i as the database platform on the Database property sheet.


A NullPointerException encountered while migrating a 3.6 project to version 9.0.4 has been corrected. This problem occurs if classes on the project classpath are not available during the migration process.

OracleAS Toplink Release Notes, 10 g ( / 10 g Release 2 (10.1.2)

Copyright © 1997, 2005, Oracle. All rights reserved.

The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.

The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose.

If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer Software—Restricted Rights (June 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065

The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and we disclaim liability for any damages caused by such use of the Programs.

Oracle, JD Edwards, PeopleSoft, and Retek are registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

The Programs may provide links to Web sites and access to content, products, and services from third parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites. You bear all risks associated with the use of such content. If you choose to purchase any products or services from a third party, the relationship is directly between you and the third party. Oracle is not responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of the agreement with the third party, including delivery of products or services and warranty obligations related to purchased products or services. Oracle is not responsible for any loss or damage of any sort that you may incur from dealing with any third party.

Left Curve
Popular Downloads
Right Curve
Untitled Document