[ 
https://issues.apache.org/cayenne/browse/CAY-1034?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Malcolm Edgar closed CAY-1034.
------------------------------

    Resolution: Incomplete

User error, I had the foreign key value defined as a BINARY type

> 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 '[EMAIL PROTECTED]>'
> The primary key column of this database is an BIGINT, this table only has one 
> record and its PK value is '1'
> {<ObjectId:SchemaConfig, [EMAIL PROTECTED]>; 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.

Reply via email to