You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Nikita Timofeev (Jira)" <ji...@apache.org> on 2019/10/18 09:08:00 UTC

[jira] [Closed] (CAY-2631) Can no longer use "byte[]" as root of scalar SQLSelect

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

Nikita Timofeev closed CAY-2631.
--------------------------------
    Resolution: Fixed

Fix for *4.2*: https://github.com/apache/cayenne/commit/572c723ba53cb3365b67b0eef8dfbfc9eb31d1f9
Fix for *4.1*: https://github.com/apache/cayenne/commit/356da7348759effbdc1215d3d48ad67973fc876a

It was a "Class.getName() vs Class.getCanonicalName()" problem.

> Can no longer use "byte[]" as root of scalar SQLSelect
> ------------------------------------------------------
>
>                 Key: CAY-2631
>                 URL: https://issues.apache.org/jira/browse/CAY-2631
>             Project: Cayenne
>          Issue Type: Bug
>    Affects Versions: 4.1.RC1
>         Environment: Derby DB (this fails in a test), Cayenne 4.1.RC1
>            Reporter: Andrus Adamchik
>            Assignee: Nikita Timofeev
>            Priority: Major
>             Fix For: 4.1.RC2, 4.2.M1
>
>
> Just switched from 4.0.x to 4.1.RC1. The following query that worked before started printing warnings and throwing an exception:
> {noformat}
> // "bytes" 
> byte[] bytes = SQLSelect
> 	.scalarQuery(byte[].class, "SELECT bytes FROM sometable")
> 	.selectOne(context);
> {noformat}
> {noformat}
> o.a.c.a.t.SerializableTypeFactory: Haven't found suitable ExtendedType for class 'byte[]'. Most likely you need to define a custom ExtendedType.
> o.a.c.a.t.SerializableTypeFactory: SerializableType will be used for type conversion.
> o.a.c.l.JdbcEventLogger: *** error.
> java.io.StreamCorruptedException: invalid stream header: 79FC63D0
> at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:808)
> at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
> at org.apache.cayenne.access.types.SerializableTypeFactory$SerializableType.toJavaObject(SerializableTypeFactory.java:106)
> at org.apache.cayenne.access.types.SerializableTypeFactory$SerializableType.toJavaObject(SerializableTypeFactory.java:70)
> at org.apache.cayenne.access.types.ExtendedTypeDecorator.materializeObject(ExtendedTypeDecorator.java:53)
> at org.apache.cayenne.access.jdbc.reader.ScalarRowReader.readRow(ScalarRowReader.java:50)
> {noformat}
> The cause seems to related to the incorrect class name extraction for "byte[]" class, so extended type lookup is failing.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)