Fixes are available
8.0.0.3: WebSphere Application Server V8.0 Fix Pack 3
8.0.0.4: WebSphere Application Server V8.0 Fix Pack 4
7.0.0.25: WebSphere Application Server V7.0 Fix Pack 25
8.0.0.5: WebSphere Application Server V8.0 Fix Pack 5
7.0.0.27: WebSphere Application Server V7.0 Fix Pack 27
8.0.0.6: WebSphere Application Server V8.0 Fix Pack 6
7.0.0.29: WebSphere Application Server V7.0 Fix Pack 29
8.0.0.7: WebSphere Application Server V8.0 Fix Pack 7
8.0.0.8: WebSphere Application Server V8.0 Fix Pack 8
7.0.0.31: WebSphere Application Server V7.0 Fix Pack 31
7.0.0.27: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.33: WebSphere Application Server V7.0 Fix Pack 33
8.0.0.9: WebSphere Application Server V8.0 Fix Pack 9
7.0.0.35: WebSphere Application Server V7.0 Fix Pack 35
8.0.0.10: WebSphere Application Server V8.0 Fix Pack 10
7.0.0.37: WebSphere Application Server V7.0 Fix Pack 37
8.0.0.11: WebSphere Application Server V8.0 Fix Pack 11
7.0.0.39: WebSphere Application Server V7.0 Fix Pack 39
8.0.0.12: WebSphere Application Server V8.0 Fix Pack 12
7.0.0.41: WebSphere Application Server V7.0 Fix Pack 41
8.0.0.13: WebSphere Application Server V8.0 Fix Pack 13
7.0.0.43: WebSphere Application Server V7.0 Fix Pack 43
8.0.0.14: WebSphere Application Server V8.0 Fix Pack 14
7.0.0.45: WebSphere Application Server V7.0 Fix Pack 45
8.0.0.15: WebSphere Application Server V8.0 Fix Pack 15
7.0.0.25: Java SDK 1.6 SR11 Cumulative Fix for WebSphere Application Server
7.0.0.27: Java SDK 1.6 SR12 Cumulative Fix for WebSphere Application Server
7.0.0.29: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.45: Java SDK 1.6 SR16 FP60 Cumulative Fix for WebSphere Application Server
7.0.0.31: Java SDK 1.6 SR15 Cumulative Fix for WebSphere Application Server
7.0.0.35: Java SDK 1.6 SR16 FP1 Cumulative Fix for WebSphere Application Server
7.0.0.37: Java SDK 1.6 SR16 FP3 Cumulative Fix for WebSphere Application Server
7.0.0.39: Java SDK 1.6 SR16 FP7 Cumulative Fix for WebSphere Application Server
7.0.0.41: Java SDK 1.6 SR16 FP20 Cumulative Fix for WebSphere Application Server
7.0.0.43: Java SDK 1.6 SR16 FP41 Cumulative Fix for WebSphere Application Server
APAR status
Closed as program error.
Error description
Local fix
N/A
Problem summary
**************************************************************** * USERS AFFECTED: All users of IBM WebSphere Application * * Server V7.0.0 and V8.0.0 who depend on * * entities in a relationship to be cascaded * * on a persist. * **************************************************************** * PROBLEM DESCRIPTION: Entities in a relationship are not * * properly cascaded after a * * EntityManager.flush is executed. * **************************************************************** * RECOMMENDATION: * **************************************************************** In certain scenario when a transaction commits, entities which should be persisted via a cascade operation are not present in the database. To properly describe this issue, let me start by first introducing a few entities, and then list a snippet of a test which uses these entities to recreate an issue with cascading entities. That said, take the following three entities: public class Vertex { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long oid; @OneToMany(mappedBy = "source", cascade = CascadeType.ALL) private List<Edge> outgoing; @OneToMany(mappedBy = "target", cascade = CascadeType.ALL) private List<Edge> incoming; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "TYPE_OID") private VertexType type; public Edge newEdge( Vertex target ) { Edge t = new Edge( this ); outgoing.add( t ); t.setTarget( target ); return t; } ......... public class VertexType { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long oid; @OneToMany(mappedBy = "type", cascade = CascadeType.ALL) List<Vertex> instances; private String name; ......... public class Edge { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long oid; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "SOURCE_OID") private Vertex source; @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "TARGET_OID") private Vertex target; ......... Before describing the test case, let me point out a couple important things about these entities. First notice that each entity contains a generated id. Second, notice that there are multiple relationships between these entities. Now let me introduce the test: EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); em.flush(); VertexType defaultType = new VertexType( "default" ); VertexType specialType = new VertexType( "special" ); em.persist(defaultType); em.persist(specialType); Vertex src = new Vertex( defaultType ); Vertex target = new Vertex( specialType ); Edge t = src.newEdge( target ); assertNotNull( t ); em.persist(src); tx.commit(); Notice that one of the first things the test does is to perform a flush. This may seem slightly odd, however this flush is important to cause the issue. We could execute a query or some other operation which would cause a flush under the covers, however, calling a flush directly makes it clear that a flush has occurred when looking at the rest of the test. With the entities and test case in place, let me now describe the issue. After this test case executes, there should exist in the database two Vertex, two VertexType, and one Edge given the cascade type defined in the entities. However, it is found that one of the Vertex is missing. The Vertex is missing due to a bug in OpenJPA code. In this case, the 'flush' at the start of the test leads OpenJPA code to belive that the Vertext has already been flushed to the database. Removing the 'flush' allows the test to work properly.
Problem conclusion
With this fix, code has been added to ensure entities in the previously described scenario are properly cascaded on a persist. The code for this fix is enbled by a custom property. The custom propery can be set as a JVM system property, or can be defined in the user's persistence.xml file as follows: <property name="openjpa.Compatibility" value="resetFlushFlagForCascadePersist=true"/> The fix for this APAR is currently targeted for inclusion in Service Levels (Fix Packs) 7.0.0.25 and 8.0.0.3 of WebSphere Application Server versions 7.0.0 and 8.0.0. Please refer to the recommended updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
Temporary fix
Comments
APAR Information
APAR number
PM48637
Reported component name
WEBSPHERE APP S
Reported component ID
5724J0800
Reported release
800
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-09-23
Closed date
2011-10-26
Last modified date
2012-08-13
APAR is sysrouted FROM one or more of the following:
PM46278
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
WEBSPHERE APP S
Fixed component ID
5724J0800
Applicable component levels
R800 PSY
UP
Document Information
Modified date:
28 October 2021