cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amedeo Mantica <amedeomant...@me.com>
Subject Re: primary key in transaction
Date Mon, 27 Nov 2017 12:14:29 GMT
The option 2 looks like exactly what I want, I'm going to try
Thank you !

Amedeo

> On 27 Nov 2017, at 07:05, Andrus Adamchik <andrus@objectstyle.org> wrote:
> 
> Hi Amedeo,
> 
> I assume you want to know the PK before commit (as otherwise Cayenne would handle that
for you transparently). In which case you have two options:
> 
> 1. Map a meaningful PK, and just call a setter on the object with whatever meaningful
value you might have.
> 
> 2. Use PkGenerator and set the PK via Object's ObjectId. The code is a bit long, so you
may need to package it in your own utility method. Something like this:
> 
> // node, pkGen and pk attribute can be located once and cached in your own PK gen code
for further resue
> DataNode node = serverRuntime
>  .getDataDomain()
>  .getDefaultNode();
> 
> PkGenerator pkGen = node
>  .getAdapter()
>  .getPkGenerator();
> 
> DbAttribute pkAttribute = node
>  .getEntityResolver().getObjEntity(MyClass.class).getDbEntity().getPrimaryKeys().iterator().next();
> 
> // generate PK for your objects
> DataObject o = ...
> Object pk = pkGen.generatePk(node, pkAttribute);
> o.getObjectId().getReplacementIdMap().put(pkAttribute.getName(), pk);
> 
> 
> Andrus
> 
> 
>> On Nov 24, 2017, at 3:16 PM, Amedeo Mantica <amedeomantica@me.com> wrote:
>> 
>> Hi all,
>> 
>> Do you know how to obtain the primary key for a newly created object ?
>> 
>> On EOF there were the method EOAdaptorChannel.primaryKeysForNewRowsWithEntity
>> 
>> mostly user by higher level Wonder method eo.primaryKeyInTransaction()
>> 
>> Anything similar in Cayenne ?
>> 
>> Thank you
>> Amedeo
> 


Mime
View raw message