[jira] Commented: (CAY-1034) ObjectId key singleValue is byte[]

From: Malcolm Edgar (JIRA) ("Malcolm)
Date: Thu Apr 17 2008 - 06:17:52 EDT

  • Next message: Malcolm Edgar (JIRA): "[jira] Issue Comment Edited: (CAY-1034) ObjectId key singleValue is byte[]"

        [ https://issues.apache.org/cayenne/browse/CAY-1034?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12816#action_12816 ]

    Malcolm Edgar commented on CAY-1034:
    ------------------------------------

    The MySQL column type is BIGINT(20),

    This problem is very strange because there are about 30 tables in this schema which has an idential primary key type, and this is the first time I have seen this issue.

    > ObjectId key singleValue is byte[]
    > ----------------------------------
    >
    > Key: CAY-1034
    > URL: https://issues.apache.org/cayenne/browse/CAY-1034
    > Project: Cayenne
    > Issue Type: Bug
    > Components: Cayenne Core Library
    > Affects Versions: 3.0
    > Environment: Cayenne 3.0 M3, JDK 1.5.0_15
    > Reporter: Malcolm Edgar
    > Assignee: Andrus Adamchik
    > Attachments: ObjectId.java
    >
    >
    > I have a nasty problem with attempting to perform a refetchObject() on a hollow object. This is the DataObject toString(), note the primary key column 'schema_config_oid' has a value of '..eaf8c>'
    > The primary key column of this database is an BIGINT, this table only has one record and its PK value is '1'
    > {<ObjectId:SchemaConfig, schema_config_oid=[..eaf8c>; hollow; []}
    > When I try to refetchObject(), I get a stacktrace of:
    > Caused by: java.sql.SQLException: Cannot convert class [B to SQL type requested due to java.lang.ClassCastException - [B
    > at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:2744)
    > at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:2532)
    > at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.setObject(WrappedPreparedStatement.java:420)
    > at org.apache.cayenne.access.types.AbstractType.setJdbcObject(AbstractType.java:79)
    > at org.apache.cayenne.access.types.ByteArrayType.setJdbcObject(ByteArrayType.java:191)
    > at org.apache.cayenne.dba.JdbcAdapter.bindParameter(JdbcAdapter.java:481)
    > at org.apache.cayenne.access.trans.QueryAssembler.initStatement(QueryAssembler.java:123)
    > at org.apache.cayenne.access.trans.QueryAssembler.createStatement(QueryAssembler.java:99)
    > at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:71)
    > at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:58)
    > at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:230)
    > ... 60 more
    > Some more analysis on this problem the ObjectId singleValue value is a byte[] of the table primary key value "3456", and the ObjectId is returning the raw byte array as the single primary key value.
    > This is making a mess of Cayenne refreshing objects, lazy loading, etc.
    > I am wondering if this is a JDK 1.5 coercion issue, I have never seen this issue before with JDK 1.4 and Cayenne 1.x.
    > A solution to this problem is provided in the attached org.apache.cayenne.ObjectId file.

    -- 
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
    



    This archive was generated by hypermail 2.0.0 : Thu Apr 17 2008 - 06:21:01 EDT