IBM Support

PI58114: ClassCastException when an equals comparison query is run on an entity with a composite @EmbeddedId

Fixes are available

9.0.0.1: WebSphere Application Server traditional V9.0 Fix Pack 1
9.0.0.2: WebSphere Application Server traditional V9.0 Fix Pack 2
8.5.5.11: WebSphere Application Server V8.5.5 Fix Pack 11
16.0.0.3: WebSphere Application Server Liberty 16.0.0.3
16.0.0.4: WebSphere Application Server Liberty 16.0.0.4
9.0.0.3: WebSphere Application Server traditional V9.0 Fix Pack 3
8.0.0.13: WebSphere Application Server V8.0 Fix Pack 13
9.0.0.4: WebSphere Application Server traditional V9.0 Fix Pack 4
8.5.5.12: WebSphere Application Server V8.5.5 Fix Pack 12
9.0.0.5: WebSphere Application Server traditional V9.0 Fix Pack 5
8.0.0.14: WebSphere Application Server V8.0 Fix Pack 14
9.0.0.6: WebSphere Application Server traditional V9.0 Fix Pack 6
8.5.5.13: WebSphere Application Server V8.5.5 Fix Pack 13
9.0.0.7: WebSphere Application Server traditional V9.0 Fix Pack 7
17.0.0.1: WebSphere Application Server Liberty 17.0.0.1
8.0.0.15: WebSphere Application Server V8.0 Fix Pack 15
17.0.0.2: WebSphere Application Server Liberty 17.0.0.2
17.0.0.3: WebSphere Application Server Liberty 17.0.0.3
17.0.0.4: WebSphere Application Server Liberty 17.0.0.4
18.0.0.1: WebSphere Application Server Liberty 18.0.0.1
18.0.0.2: WebSphere Application Server Liberty 18.0.0.2
9.0.0.8: WebSphere Application Server traditional V9.0 Fix Pack 8
8.5.5.14: WebSphere Application Server V8.5.5 Fix Pack 14
9.0.0.9: WebSphere Application Server traditional V9.0 Fix Pack 9
18.0.0.3: WebSphere Application Server Liberty 18.0.0.3
9.0.0.10: WebSphere Application Server traditional V9.0 Fix Pack 10
18.0.0.4: WebSphere Application Server Liberty 18.0.0.4
19.0.0.1: WebSphere Application Server Liberty 19.0.0.1
8.5.5.15: WebSphere Application Server V8.5.5 Fix Pack 15
19.0.0.2: WebSphere Application Server Liberty 19.0.0.2
19.0.0.3: WebSphere Application Server Liberty 19.0.0.3
9.0.0.11: WebSphere Application Server traditional V9.0 Fix Pack 11
19.0.0.4: WebSphere Application Server Liberty 19.0.0.4
19.0.0.5: WebSphere Application Server Liberty 19.0.0.5
9.0.5.0: WebSphere Application Server traditional Version 9.0.5 Refresh Pack
19.0.0.6: WebSphere Application Server Liberty 19.0.0.6
19.0.0.7: WebSphere Application Server Liberty 19.0.0.7
19.0.0.8: WebSphere Application Server Liberty 19.0.0.8
9.0.5.1: WebSphere Application Server traditional Version 9.0.5 Fix Pack 1
19.0.0.9: WebSphere Application Server Liberty 19.0.0.9
19.0.0.10: WebSphere Application Server Liberty 19.0.0.10
19.0.0.11: WebSphere Application Server Liberty 19.0.0.11
9.0.5.2: WebSphere Application Server traditional Version 9.0.5 Fix Pack 2
19.0.0.12: WebSphere Application Server Liberty 19.0.0.12
20.0.0.1: WebSphere Application Server Liberty 20.0.0.1
20.0.0.2: WebSphere Application Server Liberty 20.0.0.2
8.5.5.17: WebSphere Application Server V8.5.5 Fix Pack 17
9.0.5.3: WebSphere Application Server traditional Version 9.0.5 Fix Pack 3
20.0.0.3: WebSphere Application Server Liberty 20.0.0.3
20.0.0.4: WebSphere Application Server Liberty 20.0.0.4
20.0.0.5: WebSphere Application Server Liberty 20.0.0.5
20.0.0.6: WebSphere Application Server Liberty 20.0.0.6
9.0.5.4: WebSphere Application Server traditional Version 9.0.5 Fix Pack 4
20.0.0.7: WebSphere Application Server Liberty 20.0.0.7
20.0.0.8: WebSphere Application Server Liberty 20.0.0.8
9.0.5.5: WebSphere Application Server traditional Version 9.0.5 Fix Pack 5
20.0.0.9: WebSphere Application Server Liberty 20.0.0.9
20.0.0.10: WebSphere Application Server Liberty 20.0.0.10
20.0.0.11: WebSphere Application Server Liberty 20.0.0.11
20.0.0.12: WebSphere Application Server Liberty 20.0.0.12
9.0.5.6: WebSphere Application Server traditional Version 9.0.5 Fix Pack 6

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Customer is seeing following exception :
    
    Caused by: java.lang.ClassCastException:
    nl.belastingdienst.openjpa.
    domein.SubjectKey incompatible with [Ljava.lang.Object;
     at
    org.apache.openjpa.jdbc.kernel.exps.Param.appendTo(Param.java:14
    9)
     at
    org.apache.openjpa.jdbc.kernel.exps.EqualExpression.appendTo
    (EqualExpression.java:73)
     at
    org.apache.openjpa.jdbc.kernel.exps.CompareEqualExpression.appen
    dTo
    (CompareEqualExpression.java:108)
     at
    org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.buildWhere
    
    (SelectConstructor.java:312)
     at
    org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.evaluate
    (SelectConstructor.java:94)
     at
    org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.createWhereSelects
    
    (JDBCStoreQuery.java:360)
     at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeQuery
    

Local fix

  • N/A
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V8.0.0, V8.5.0, V8.5.5, and V9.0.0   *
    *                  who make use of an @EmbeddedId in their     *
    *                  JPA entity.                                 *
    ****************************************************************
    * PROBLEM DESCRIPTION: ClassCastException occurs when an       *
    *                      equals comparison query is executed     *
    *                      on an entity with a composite           *
    *                      @EmbeddedId.                            *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    Take the following JPA entity:
    @Entity
    public class Subject implements Serializable {
    @EmbeddedId
    private SubjectKey key;
    .......
    Where SubjectKey class is as follows:
    @Embeddable
    public class SubjectKey implements Serializable {
    private Integer subjectNummer;
    private String subjectTypeCode;
    ......
    As can be seen we have a composite primary key. With
    this, take this query:
    TypedQuery<Subject> query = em.createQuery("select s from
    Subject s where s = :subject", Subject.class);
    query.setParameter("subject", s);
    Subject s2 = query.getSingleResult();
    This query will yield the following exception:
    java.lang.ClassCastException:
    org.apache.openjpa.persistence.embed.compositepk.SubjectKey
    cannot be cast to [Ljava.lang.Object;]
    at
    org.apache.openjpa.jdbc.kernel.exps.Param.appendTo(Param.java:14
    9)
    If a corresponding 'em.find' of Subject is run, this
    exception doesn't occur. Furthermore, if the same
    query is run for an entity with an @EmbeddedId that only
    contains one field, all will work as expected. The issue here
    is with an equals query where the entity contains an
    @EmbeddableId with more than two fields.
    

Problem conclusion

  • With this fix, code has been added to OpenJPA to properly
    handle the case where an equals comparision is performed on a
    composite primary key.
    
    The fix for this APAR is currently targeted for
    inclusion in Service Levels (Fix Packs) 8.0.0.13, 8.5.5.11,
    and 9.0.0.2 of WebSphere Application Server versions 8.0.0,
    8.5.5 and 9.0.0.  It is also included in WebSphere Liberty
    16.0.0.3.
    
    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

    PI58114

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-02-25

  • Closed date

    2016-07-14

  • Last modified date

    2017-06-26

  • 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

  • R800 PSY

       UP

  • R850 PSY

       UP

  • R900 PSY

       UP

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

Document Information

Modified date:
15 October 2021