Re: Problems with MySql id type with AUTO_INCREMENT

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Aug 29 2006 - 07:27:31 EDT

  • Next message: Tobias SCHOESSLER: "Re: Problems with MySql id type with AUTO_INCREMENT"

    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
    > <andru..bjectsty
    >
    > le.org> To
    > cayenne-
    > use..ncubator.apache.org
    > Tuesday,
    > 29 cc
    > August 2006 11:00
    >
    > Subject
    > Re: Problems with MySql id type
    > Please respond to with AUTO_INCREMENT
    > cayenne-use..ncu
    > 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
    >>
    >>
    >>
    >>
    >
    >
    >
    >



    This archive was generated by hypermail 2.0.0 : Tue Aug 29 2006 - 07:27:46 EDT