cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tobias SCHOESSLER <Tobias.Schoess...@unvienna.org>
Subject Re: Problems with MySql id type with AUTO_INCREMENT
Date Tue, 29 Aug 2006 12:16:17 GMT
But still you are right there is a bug in mysql too. If the column type is
INT and not INT UNSIGNED it should return java.lang.Integer but it returns
java.lang.Long instead. This was my first observation.

http://lists.mysql.com/java/6383

this is from jconnector 3.0.8 but I don't see it fixed in the 3.1.13
release notes.

So this is the reason why I got a class cast exception for the PK in the
first place. Then I changed the mysql datatype to INT UNSIGNED.

but why does cayenne need BIGINT mapping set for the column to retrieve it
as a java.lang.Long? I understand that this is unrelated to the bug in the
mysql jdbc driver mentioned above.




                                                                           
             Andrus Adamchik                                               
             <andrus@objectsty                                             
             le.org>                                                    To 
                                       cayenne-user@incubator.apache.org   
             Tuesday, 29                                                cc 
             August 2006 13:45                                             
                                                                   Subject 
                                       Re: Problems with MySql id type     
             Please respond to         with AUTO_INCREMENT                 
             cayenne-user@incu                                             
             bator.apache.org                                              
                                                                           
                                                                           
                                                                           
                                                                           




You are right: "INTEGER [UNSIGNED] [...] java.lang.Integer, if
UNSIGNED java.lang.Long". Who would've thought! :-)

I'd appreciate a Jira issue so that we don't forget about it.

Andrus



On Aug 29, 2006, at 3:40 PM, Tobias SCHOESSLER wrote:

> For the driver I use mysql-connector-java-3.1.13-bin.jar
>
> here
>
> http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-type-
> conversions.html
>
> it reads that INT UNSIGNED should map to java.lang.Long. This is
> fine I
> think and it is correct right after creation of the object.
>
> But why is the type of the column java.lang.Integer when I retrieve
> the
> value later via cayenne? Isn't the bug rather to search there?
>
>
>
>
>
>
>              Andrus Adamchik
>              <andrus@objectsty
>
> le.org>                                                    To
>                                        cayenne-
> user@incubator.apache.org
>              Tuesday,
> 29                                                cc
>              August 2006 13:27
>
> Subject
>                                        Re: Problems with MySql id type
>              Please respond to         with AUTO_INCREMENT
>              cayenne-user@incu
>              bator.apache.org
>
>
>
>
>
>
>
>
> I don't think that globally changing INT to be mapped to JDBC BIGINT
> is a good idea (although this can be done by editing org/objectstyle/
> cayenne/dba/mysql/types.xml). What is confusing to me is why the
> generated key is java.lang.Long for the INTEGER column. Could be a
> MySQL driver bug???
>
> Andrus
>
>
> On Aug 29, 2006, at 3:15 PM, Tobias SCHOESSLER wrote:
>
>> it was mapped as
>>
>> <db-attribute ... type="INTEGER" length="10"/>
>>
>> I changed the type to BIGINT and now the PK is always a Long. Great,
>> thanks. This was hard to guess.
>>
>> Is the jdbc type mapping messed up for the MySQL Adapter?
>>
>> When I reverse engineer the db from scratch
>>
>> INT UNSIGNED is mapped as <db-attribute ... type="INTEGER"
>> length="10"/>
>>
>> INT is mapped as <db-attribute ... type="INTEGER" length="11"/>
>>
>> Could you give me a hint where to change this mapping so I do not
>> have to
>> set it to BIGINT manually?
>>
>> thank you
>>
>> Tobias
>>
>>
>>
>>
>>
>>              Andrus Adamchik
>>              <andrus@objectsty
>>
>> le.org>                                                    To
>>                                        cayenne-
>> user@incubator.apache.org
>>              Tuesday,
>> 29                                                cc
>>              August 2006 11:00
>>
>> Subject
>>                                        Re: Problems with MySql id
>> type
>>              Please respond to         with AUTO_INCREMENT
>>              cayenne-user@incu
>>              bator.apache.org
>>
>>
>>
>>
>>
>>
>>
>>
>> How is the column mapped in the Modeler? Have you tried mapping it as
>> BIGINT?
>>
>> Andrus
>>
>>
>>
>> On Aug 28, 2006, at 1:22 PM, Tobias SCHOESSLER wrote:
>>
>>>
>>> I use cayenne 1.2, MySql. AUTO_INCREMENT ids
>>>
>>> the type of the id field in the mysql schema is set to
>>>
>>> INT NOT NULL AUTO_INCREMENT UNIQUE
>>>
>>> I create an object of this table with cayenne and commit. I see the
>>> row
>>> inserted ok. When accessing the Id of the object via
>>>
>>>       getObjectId().getIdSnapshot().get(this.FOLDER_UID_PK_COLUMN)
>>>
>>> in the same DataContext the type of the Object retruned is a Long.
>>> (Though
>>> I would have expected it to be an Integer from the MySql jdbc
>>> documentation)
>>>
>>> When I use a fresh DataContext and retrieve the same row the id
>>> object
>>> returned by
>>>
>>>       getObjectId().getIdSnapshot().get(this.FOLDER_UID_PK_COLUMN)
>>>
>>> seems to be an Integer ?
>>>
>>>
>>>
>>> I tried to set the type to
>>>
>>> INT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
>>>
>>> which is supposed to be of Long type from the jdbc type
>>> documentation of
>>> MySql.
>>>
>>> to force the id object always to be a Long but cayenne still
>>> returns an
>>> Integer when reading  from the db.
>>>
>>> any ideas?
>>>
>>> thanks
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>
>
>
>




Mime
View raw message