IBM Support

PM67875: USE OF ABSTRACTVALUEHANDLER MAP() CAUSES EXCEPTION ON FIND()

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When a value strategy implemented by a subclass of
    AbstractValuehandler overrides the map() method, an exception
    occurs on a find() if the strategy is implemented on an id
    field. The method returns a Column[].
    
    <openjpa-2.1.2-SNAPSHOT-r422266:1297100 nonfatal user error>
    org.apache.openjpa.persistence.ArgumentException: The specified
    parameter of type "class [Ljava.lang.Object;" is not a valid
    query parameter.
    FailedObject: id1 [org.apache.openjpa.util.StringId]
    [java.lang.String]
    at
    org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary
    .java:1465)
    at
    org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary
    .java:1391)
    at
    org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.ja
    va:656)
    at
    org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer
    .java:565)
    at
    org.apache.openjpa.jdbc.sql.SQLBuffer.prepareStatement(SQLBuffer
    .java:541)
    at
    org.apache.openjpa.jdbc.sql.SelectImpl.prepareStatement(SelectIm
    pl.java:479)
    at
    org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:4
    20)
    at
    org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:3
    82)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getInitializeSta
    teResult(JDBCStoreManager.java:576)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(
    JDBCStoreManager.java:378)
    at
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCS
    toreManager.java:333)
    at
    org.apache.openjpa.kernel.DelegatingStoreManager.initialize(Dele
    gatingStoreManager.java:112)
    at
    org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreMan
    ager.java:57)
    at
    org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:
    1027)
    at
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:985)
    at
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:902)
    at
    org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker
    .java:231)
    at
    org.apache.openjpa.persistence.EntityManagerImpl.find(EntityMana
    gerImpl.java:486)
    at
    org.apache.openjpa.persistence.strategy.value.TestValueStrategy.
    testIt(TestValueStrategy.java:37)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor
    Impl.java:88)
    at
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod
    AccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:613)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at
    org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.
    runTest(AbstractPersistenceTestCase.java:579)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at
    org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.
    runBare(AbstractPersistenceTestCase.java:566)
    at
    org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.
    runBare(AbstractPersistenceTestCase.java:542)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at
    org.apache.openjpa.persistence.test.AbstractPersistenceTestCase.
    run(AbstractPersistenceTestCase.java:206)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at
    org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference
    .run(JUnit3TestReference.java:130)
    at
    org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExec
    ution.java:38)
    at
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
    RemoteTestRunner.java:467)
    at
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(
    RemoteTestRunner.java:683)
    at
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(Remot
    eTestRunner.java:390)
    at
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(Remo
    teTestRunner.java:197)
    
    Presumably the exception would occur on other fields if they
    were part of the query.
    
    The DBDictionary setUnknown() method needs to handle input of an
    Object[].
    

Local fix

  • No local fix or work around
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server                                      *
    ****************************************************************
    * PROBLEM DESCRIPTION: An ArgumentException is thrown when an  *
    *                      application attempts to utilize a       *
    *                      custom                                  *
    *                      value strategy class.                   *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    When a value strategy implemented by a subclass of
    AbstractValuehandler overrides the map() method, an exception
    occurs on a find() if the strategy is implemented on an id
    field.  The DBDictionary setUnknown() method needs to handle
    input of an Object[].
    Sample Exception:
    <openjpa-2.1.2-SNAPSHOT-r422266:1297100 nonfatal user error>
    org.apache.openjpa.persistence.ArgumentException: The specified
    parameter of type "class [Ljava.lang.Object;" is not a valid
    query parameter.
    FailedObject: id1 [org.apache.openjpa.util.StringId]
    [java.lang.String]
    at
    org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary
    .java:1465)
    at
    org.apache.openjpa.jdbc.sql.DBDictionary.setUnknown(DBDictionary
    .java:1391)
    at
    org.apache.openjpa.jdbc.sql.SQLBuffer.setParameters(SQLBuffer.ja
    va:656)
    ...
    

Problem conclusion

  • The DBDictionary.setUnknown() method has been updated to
    properly handle an Object[] input.
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 8.0.0.5 and 8.5.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

    PM67875

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-06-28

  • Closed date

    2012-09-25

  • Last modified date

    2012-09-25

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

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

    PM80434

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R800 PSY

       UP

  • R850 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":"8.0","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
29 October 2021