IBM Support

PM41240: CLASSCASTEXCEPTION WHEN BASE ENTITY CLASS HAS INHERITANCETYPE.SI NGLE_TABLE BASE WITH MULTIPLE ENTITY SUBCLASSES

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

  • Using InheritanceType.SINGLE_TABLE a ClassCastException
    occurs when accessing entities in the inheritance hierarchy.
    The exception is as follows:
    
    Caused by: java.lang.ClassCastException:
    problem.domain.ItemRecord
    at
    problem.domain.InputHeaderRecord.pcReplaceField(InputHeaderRecor
    d.java)
    at
    org.apache.openjpa.kernel.StateManagerImpl.replaceField(StateMan
    agerImpl.java:3041)
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V7.0.0 who make use of the JPA       *
    *                  InheritanceType.SINGLE_TABLE type and       *
    *                  JPA entity subclasses.                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: ClassCastException when base entity     *
    *                      class has                               *
    *                      InheritanceType.SINGLE_TABLE base       *
    *                      with multiple entity subclasses.        *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    If multiple entity subclasses extends a entity base class
    using InheritanceType.SINGLE_TABLE, with Many-to-One relation
    from base class to itself, a ClassCastException may occur when
    the Many-to-One collection is not empty due to a problem in
    discriminating the proper entity subclass type.
    Caused by: java.lang.ClassCastException:
    problem.domain.ItemRecord
    at
    problem.domain.InputHeaderRecord.pcReplaceField(InputHeaderRecor
    d.java)
    at
    org.apache.openjpa.kernel.StateManagerImpl.replaceField(StateMan
    agerImpl.java:3041)
    at
    org.apache.openjpa.kernel.StateManagerImpl.storeObjectField(Stat
    eManagerImpl.java:2473)
    at
    org.apache.openjpa.kernel.StateManagerImpl.storeObject(StateMana
    gerImpl.java:2463)
    at
    org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEa
    gerJoin(RelationFieldStrategy.java:541)
    at
    org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMap
    ping.java:807)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreMa
    nager.java:1052)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreMa
    nager.java:1012)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(
    JDBCStoreManager.java:378)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCS
    toreManager.java:278)
    at
    org.apache.openjpa.kernel.DelegatingStoreManager.initialize(Dele
    gatingStoreManager.java:111)
    at
    org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreMan
    ager.java:57)
    at
    org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:
    913)
    at
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:871)
    ... 38 more
    To follow is an example of how the code looks for this
    exception to occur:
    @Entity
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "DISCRIMATOR", discriminatorType =
    DiscriminatorType.INTEGER)
    @DiscriminatorValue("99")
    public class ParentRecord {
    @Id
    public long identifier;
    @ManyToOne(cascade =
    CascadeType.MERGE,fetch=FetchType.EAGER)
    @ForeignKey
    @JoinColumn(name = "PARENT_ID")
    private ParentRecord parent;
    ....
    @Entity
    @DiscriminatorValue("6")
    public class ItemRecord extends ParentRecord {
    .....
    @Entity
    @DiscriminatorValue("8")
    public class InputRecord extends ParentRecord {
    .....
    

Problem conclusion

  • With this fix, code has been added to OpenJPA to correctly
    discriminate between the class in the inheritance hierarchy
    which the user is requesting versus other classes in the
    hierarchy.
    
    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

    PM41240

  • Reported component name

    WAS EXPRESS

  • Reported component ID

    5724I6300

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2011-06-09

  • Closed date

    2011-09-02

  • Last modified date

    2011-09-02

  • 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

    WAS EXPRESS

  • Fixed component ID

    5724I6300

Applicable component levels

  • R700 PSY

       UP

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

Document Information

Modified date:
27 October 2021