IBM Support

PM48637: INCLUDE JIRA OPENJPA-2051

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

Subscribe

You can track all active APARs for this component.

 

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

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
28 October 2021