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 <[EMAIL PROTECTED] le.org> To [email protected] Tuesday, 29 cc August 2006 13:27 Subject Re: Problems with MySql id type Please respond to with AUTO_INCREMENT [EMAIL PROTECTED] 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 > <[EMAIL PROTECTED] > > le.org> To > cayenne- > [EMAIL PROTECTED] > Tuesday, > 29 cc > August 2006 11:00 > > Subject > Re: Problems with MySql id type > Please respond to with AUTO_INCREMENT > [EMAIL PROTECTED] > 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 >> >> >> >> > > > >
