|
Anonymous |
at Oct 16, 2008 at 2:04 pm
|
⇧ |
| |
[
https://issues.apache.org/cayenne/browse/CAY-1125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13169#action_13169 ]
Ricardo Ghisi Tobaldini commented on CAY-1125:
----------------------------------------------
Sorry for the lack of details, here it goes.
Forcing the type to INTEGER in the map.xml changes anything.
Could you please clarify this - does it fix the problem or not?
What query is causing the error? Could you post a stack trace of the exception?
I have discovered now that, when I use a SelectQuery() to retrieve all the rows of a table, I can read the unsigned smallint values (as Integers) AFTER I force the type to java.lang.Integer (on the map.xml).
But when I use a SQLTemplate with a query of the kind "select * from", even with java.lang.Integer on the map.xml, raises an exception (com.mysql.jdbc.exceptions.jdbc4.MySQLDataException)
Following this post I will attach the stack trace, the dump of the database used in the tests and the source of the tests.
Thanks, Andrus, for the feedback :)
MySQL SMALLINT UNSIGNED is mapped as java.lang.Short, should be java.lang.Integer
---------------------------------------------------------------------------------
Key: CAY-1125
URL:
https://issues.apache.org/cayenne/browse/CAY-1125Project: Cayenne
Issue Type: Bug
Components: Cayenne Core Library
Affects Versions: 2.0 [STABLE]
Environment: Ubuntu Linux 8.04, Java 1.6.0_07, MySQL 5.0.51a-3ubuntu5.1, MySQL Connector/J 5.1.6
Reporter: Ricardo Ghisi Tobaldini
Assignee: Andrus Adamchik
Attachments: stacktrace.txt
When trying to retrieve the value of a column that is of type "SMALLINT UNSIGNED" an exception of type com.mysql.jdbc.exceptions.jdbc4.MySQLDataException is raised.
This only happens if the value on that column is greater than 32767, since it overflows the Java Short type (that is always signed).
Forcing the type to INTEGER in the map.xml changes anything.
It seems that Cayenne is using a getShort() when it should use getInteger() (the later is always needed when using the unsigned version of SMALLINT in the database, doesn't it?).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.