You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by "Malcolm Edgar (JIRA)" <de...@cayenne.apache.org> on 2008/04/17 12:19:52 UTC

[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 ] 

medgar edited comment on CAY-1034 at 4/17/08 3:18 AM:
-------------------------------------------------------------

The MySQL column type is BIGINT(20) and is the entity primary key.

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.

      was (Author: medgar):
    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 'B@ceaf8c>'
> 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=[B@ceaf8c>; 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.