IBM Support

PM34867: LAZY FETCHING OF THE OBJECTS RETURNS MULTIPLE OBJECTS

Fixes are available

7.0.0.19: WebSphere Application Server V7.0 Fix Pack 19
7.0.0.21: WebSphere Application Server V7.0 Fix Pack 21
7.0.0.23: WebSphere Application Server V7.0 Fix Pack 23
7.0.0.25: WebSphere Application Server V7.0 Fix Pack 25
7.0.0.27: WebSphere Application Server V7.0 Fix Pack 27
7.0.0.29: WebSphere Application Server V7.0 Fix Pack 29
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
7.0.0.35: WebSphere Application Server V7.0 Fix Pack 35
7.0.0.37: WebSphere Application Server V7.0 Fix Pack 37
7.0.0.39: WebSphere Application Server V7.0 Fix Pack 39
7.0.0.41: WebSphere Application Server V7.0 Fix Pack 41
7.0.0.43: WebSphere Application Server V7.0 Fix Pack 43
7.0.0.45: WebSphere Application Server V7.0 Fix Pack 45
7.0.0.19: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.21: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere
7.0.0.23: Java SDK 1.6 SR10 FP1 Cumulative Fix for WebSphere
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

  • Single Table Inheritance Strategy causes JPA entity identity
    issues.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V7.0.0 who make use of a Java        *
    *                  Persistence API (JPA) single table          *
    *                  inheritance strategy.                       *
    *                                                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: Single Table Inheritance Strategy       *
    *                      causes JPA entity identity issues.      *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Take the following three entities and notice the
    inheritance/hierarchy:
    
    @Entity
    @Inheritance
    public class ParentRecord {
    
        @Id
        private long id;
    
        //Changing EAGER and LAZY effects the tests
        @OneToOne(fetch=FetchType.LAZY)
        ParentRecord parent;
    ..........
    }
    
    
    
    @Entity
    public class HeaderRecord extends ParentRecord {
    
        //Changing EAGER and LAZY effects the tests
        @OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
        ControlRecord controlRecord;
    .....
    }
    
    
    
    @Entity
    public class ControlRecord extends ParentRecord{
        //intentionally empty
    }
    
    
    
    Notice that ParentRecord uses @Inheritance.  By default,
    @Inheritance uses an InheritanceType.SINGLE_TABLE as the
    default strategy (which plays a role in this issue).  With
    these entities, take this test:
    
    
    //Find an existing HeaderRecord; assume one exists with id 10
    HeaderRecord hrSaved = em.find(HeaderRecord.class, 10);
    
    //Now, get a HeaderRecord from the relationship
    //with ControlRecord
    HeaderRecord hrFromControl = (HeaderRecord)
    hrSaved.getControlRecord().getParent();
    
    //Compare the two header objects; they are expected to
    //be identical as they have same primary key.
    assertTrue(hrSaved == hrFromControl);
    
    
    With this test, the 'assertTrue' method will fail as the two
    HeaderRecord objects are not identical.  This is due to a bug
    in OpenJPA code when an inheritance strategy of
    InheritanceType.SINGLE_TABLE is used.  As the test shows, the
    same HeaderRecord is retrieved in two ways: by a find method,
    and by a getter method to traverse the relationship.
    These methods should return the same identical
    entity/object. However, there is a bug in the OpenJPA code
    such that the same entity is not found by OpenJPA code, as
    such another copy of the entity is retrieved from the
    database.  Finally, as the comments in the entities above
    suggest, the FetchType used plays a role in the outcome of the
    test.  Using a FetchType of EAGER on both entities will allow
    the test to pass.
    

Problem conclusion

  • With this fix, code has been added to ensure that the same
    entity identity is used and found regardless of the means by
    which the entity is retrieved (that is, finder or getter).
    
    The fix for this APAR is currently targeted for inclusion in
    Service Level (Fix Pack) 7.0.0.19 of WebSphere Application
    Server version 7.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

    PM34867

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2011-03-15

  • Closed date

    2011-03-31

  • Last modified date

    2011-03-31

  • APAR is sysrouted FROM one or more of the following:

  • 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

  • R700 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":"7.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
27 October 2021