You shouldn't need to write your own method to get the office ID.  Add
the mapping to your ObjEntity by hand and regenerate the Java class
and it should create a getOfficeId() for you.

mrg


On Thu, Jul 30, 2009 at 4:27 PM, Lucas Holt<[email protected]> wrote:
> I've got a situation where I need to obtain the primary key.  My solution
> was to add a method like so:
>
> public Byte getOfficeId() {
>     return (getObjectId() != null && !getObjectId().isTemporary())
>                ? (Byte)
> getObjectId().getIdSnapshot().get(OFFICE_ID_PK_COLUMN)
>                : null;
> }
>
>
> However, sometimes I get back a Byte and other times a Short.  I've verified
> this with getClass().getName()
>
> How exactly does the data type get chosen here?  Any suggestions?
>
> I've thought about just testing for the cases where the type is different
> and converting it, but it seems like this shouldn't be happening.
>
> Here's the table definition:
>
> CREATE TABLE IF NOT EXISTS `office` ( `office_id` tinyint(3) unsigned NOT
> NULL AUTO_INCREMENT, `country_id` smallint(5) unsigned NOT NULL,
> `company_id` tinyint(3) unsigned NOT NULL, `name` varchar(45) NOT NULL,
> `address` tinytext NOT NULL, PRIMARY KEY (`office_id`), KEY
> `office_country_id` (`country_id`), KEY `office_company` (`company_id`) )
> ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
>
> I'm using Cayenne 2.0.4, MySQL 5.1, mysql-connector-java-5.0.5, and java
> version "1.5.0_19" (os x)
>
>
>        <db-entity name="office" catalog="prime_pcd2009">
>                <db-attribute name="address" type="VARCHAR"
> isMandatory="true" length="255"/>
>                <db-attribute name="company_id" type="TINYINT"
> isMandatory="true"/>
>                <db-attribute name="country_id" type="SMALLINT"
> isMandatory="true" length="5"/>
>                <db-attribute name="name" type="VARCHAR" isMandatory="true"
> length="45"/>
>                <db-attribute name="office_id" type="TINYINT"
> isPrimaryKey="true" isGenerated="true" isMandatory="true" length="3"/>
>        </db-entity>
>
> Luke
>

Reply via email to