IBM Support

PI97483: ECLIPSELINK RE-SORTS INSERT AND REMOVES STATEMENTS WITHIN A TRANSACTION

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • EclipseLink is reordering the operations within a single
    transaction at commit. This leads to foreign key contraint
    violation, which was not happening with OpenJPA.
    

Local fix

  • 1) Create an EclipseLink DescriptorCustomizer.
    2) Explicit em.flush() after em.persist(). This will force
    EclipseLink to execute all deferred SQL now.
    3) Change the DB constraint to
    CHILDENTITY(PARENT)<->PARENTBASEENTITY(PARENTBASEENTITY_PK)
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  Users migrating from OpenJPA (JPA 2.0) to   *
    *                  EclipseLink (JPA 2.1)                       *
    ****************************************************************
    * PROBLEM DESCRIPTION: Adds a new persistence property to      *
    *                      EclipseLink that disables               *
    *                      operation reordering. Similar to        *
    *                      'openjpa.jdbc.UpdateManager=operation-  *
    *                      o                                       *
    *                      rder'                                   *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    EclipseLink currently reorders multiple operations within a
    single transaction, assuming foreign key relationships. This
    can cause issues during migration from OpenJPA to EclipseLink
    when the OpenJPA schema contains FK relationships at odds with
    EclipseLink's schema generation. EclipseLink has the ability
    to turn this behavior off by configuring the
    ClassDescriptor.hasMultipleTableConstraintDependecy boolean,
    however this configuration is difficult to setup; requiring
    EclipseLink SessionCustomizers. This is the current way to
    disable deferring multiple table writes.
    This APAR adds a new persistence property to EclipseLink:
    eclipselink.jpa.sql-call-deferral
    The expected values for this property are: TRUE or FALSE
    This property mirrors the same behavior of
    ClassDescriptor.hasMultipleTableConstraintDependecy, but is
    much easier to configure; requiring only to set the
    persistence property in the persistence.xml.
    

Problem conclusion

Temporary fix

Comments

APAR Information

  • APAR number

    PI97483

  • Reported component name

    WEBS APP SERV N

  • Reported component ID

    5724H8800

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2018-05-01

  • Closed date

    2018-11-19

  • Last modified date

    2018-11-20

  • 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

    WEBS APP SERV N

  • Fixed component ID

    5724H8800

Applicable component levels

  • R900 PSY

       UP

[{"Line of Business":{"code":"LOB36","label":"IBM Automation"},"Business Unit":{"code":"BU053","label":"Cloud \u0026 Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"900"}]

Document Information

Modified date:
22 August 2021