A fix is available
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
The fix for this APAR changes the EclipseLink implementation and involves an update to the thirdparty source. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=533148 This fix is currently targeted for WebSphere Application Server 9.0.0.9 and WebSphere Liberty 18.0.0.2. 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
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
[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
01 November 2021