You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Mark Fraser <ma...@mark100.net> on 2009/06/17 23:17:51 UTC

Object Validation Auto Increment Problem

Hello,

I am using Cayenne 2.0.4 with Derby embedded.

I am getting a ValidationException "id is required" when I commit 
changes after creating a new object.

I have set the PK Generation Strategy to Database-Generated and set the 
ID field as Auto Incremented in the modeler.

In my map file the id field looks like this:

...db-attribute name="ID" type="INTEGER" isPrimaryKey="true" 
isGenerated="true" isMandatory="true" length="10"....


I have also tested whether Cayenne thinks the adapter supports generated 
keys with the following code:


    DataMap map = dataContext.getEntityResolver().getDataMap("MyMap");
    DataNode node = dataContext.getParentDataDomain().lookupDataNode(map);
    DbAdapter ad = node.getAdapter();
    System.out.println(ad.supportsGeneratedKeys());
  
and this returns true.

If I uncheck "Object Validation" for the data domain in the modeler 
everything works fine.

However I would rather not turn off object validation.

Anyone have any suggestions on what I might be missing?

Thanks,

Mark

Re: Object Validation Auto Increment Problem

Posted by Andrus Adamchik <an...@objectstyle.org>.
You can't uncheck mandatory checkbox for a PK.

As to the original problem, I am pretty sure I am not seeing this  
behavior in Cayenne 3.0. Could be a bug in 2.0.4. Would it be possible  
to try it out with 3.0?

Andrus


On Jun 18, 2009, at 6:39 PM, Michael Gentry wrote:

> I'm going to take a guess that the isMandatory="true" is firing first
> before the PK is generated and assigned.  Try turning that off and see
> if it works.  Cayenne should know that PKs are mandatory, anyway.
>
> mrg
>
>
> On Wed, Jun 17, 2009 at 5:17 PM, Mark Fraser<ma...@mark100.net> wrote:
>> Hello,
>>
>> I am using Cayenne 2.0.4 with Derby embedded.
>>
>> I am getting a ValidationException "id is required" when I commit  
>> changes
>> after creating a new object.
>>
>> I have set the PK Generation Strategy to Database-Generated and set  
>> the ID
>> field as Auto Incremented in the modeler.
>>
>> In my map file the id field looks like this:
>>
>> ...db-attribute name="ID" type="INTEGER" isPrimaryKey="true"
>> isGenerated="true" isMandatory="true" length="10"....
>>
>>
>> I have also tested whether Cayenne thinks the adapter supports  
>> generated
>> keys with the following code:
>>
>>
>>   DataMap map = dataContext.getEntityResolver().getDataMap("MyMap");
>>   DataNode node =  
>> dataContext.getParentDataDomain().lookupDataNode(map);
>>   DbAdapter ad = node.getAdapter();
>>   System.out.println(ad.supportsGeneratedKeys());
>>  and this returns true.
>>
>> If I uncheck "Object Validation" for the data domain in the modeler
>> everything works fine.
>>
>> However I would rather not turn off object validation.
>>
>> Anyone have any suggestions on what I might be missing?
>>
>> Thanks,
>>
>> Mark
>>
>


Re: Object Validation Auto Increment Problem

Posted by Michael Gentry <mg...@masslight.net>.
I'm going to take a guess that the isMandatory="true" is firing first
before the PK is generated and assigned.  Try turning that off and see
if it works.  Cayenne should know that PKs are mandatory, anyway.

mrg


On Wed, Jun 17, 2009 at 5:17 PM, Mark Fraser<ma...@mark100.net> wrote:
> Hello,
>
> I am using Cayenne 2.0.4 with Derby embedded.
>
> I am getting a ValidationException "id is required" when I commit changes
> after creating a new object.
>
> I have set the PK Generation Strategy to Database-Generated and set the ID
> field as Auto Incremented in the modeler.
>
> In my map file the id field looks like this:
>
> ...db-attribute name="ID" type="INTEGER" isPrimaryKey="true"
> isGenerated="true" isMandatory="true" length="10"....
>
>
> I have also tested whether Cayenne thinks the adapter supports generated
> keys with the following code:
>
>
>   DataMap map = dataContext.getEntityResolver().getDataMap("MyMap");
>   DataNode node = dataContext.getParentDataDomain().lookupDataNode(map);
>   DbAdapter ad = node.getAdapter();
>   System.out.println(ad.supportsGeneratedKeys());
>  and this returns true.
>
> If I uncheck "Object Validation" for the data domain in the modeler
> everything works fine.
>
> However I would rather not turn off object validation.
>
> Anyone have any suggestions on what I might be missing?
>
> Thanks,
>
> Mark
>