IBM Support

PM18733: UNABLE TO SERIALIZE AN ENTITY WITH A VERSION FIELD, AND A DATE FIELD WHEN OPENJPA.DETACHSTATE=(DETACHEDSTATEFIELD=TRUE)

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • OpenJPA instrumented the application's entity classes with
    generated code. The entity must match the following criteria:
     * Must contain a version field
     * Must contain a Date or Collection of primitive types
     * Must be serializable.
    The following persistence property must be set at runtime and
    when the code is generated:
    openjpa.DetachState=(DetachedStateField=true)
    
    If these conditions are met the entity may no longer be
    serialized.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server Java Persistence API applications.   *
    ****************************************************************
    * PROBLEM DESCRIPTION: An entity class is unable to be         *
    *                      serialized.                             *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    An exception is thrown when calling the readExternal method on
    an Entity class if the following conditions are met :
    
    * The openjpa.DetachStateManager property is found in
    persistence.xml and contains DetachedStateField=true.
    * The entity class contains a version field
    * The entity class contains a Date field or a collection of
    primitive (non entity) types.
    * The entity class implements Serializable
    
    An example exception looks like this :
    java.lang.IllegalArgumentException
        at foo.bar.AnEntity.pcProvideField(AnEntity.java)
        at
    org.apache.openjpa.kernel.DetachedStateManager.proxyDetachedDe
    serialized(DetachedStateManager.java:425)
        at foo.bar.AnEntity.readExternal(AnEntity.java)
        at
    com.ibm.rmi.io.IIOPInputStream.readExternalizable(IIOPInputStrea
    m.java:1108)
    

Problem conclusion

  • The OpenJPA PCEnhancer class generates a readExternal method
    for serializable entity classes. The PCEnhancer code has been
    updated to generate a readExternal method which will not throw
    an exception when a DetachedStateField is used.
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 1.0.0.1.  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

    PM18733

  • Reported component name

    JPA OSGI FEATUR

  • Reported component ID

    5724J0857

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-07-19

  • Closed date

    2010-07-28

  • Last modified date

    2010-07-28

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

    PM18543

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

Fix information

  • Fixed component name

    JPA OSGI FEATUR

  • Fixed component ID

    5724J0857

Applicable component levels

  • R700 PSY

       UP



Document information

More support for: WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0
General

Software version: 1.0

Reference #: PM18733

Modified date: 28 July 2010