Michael,

Yeah I knew about mapping the attribute, I hadn’t thought about key generation 
but clearly that’s a thing.  We’re getting a transactionID that’s unique and we 
have to prevent duos and ensure that when we get duplicate copies in the future 
that we can easily identify if a record has been updated. To that end I’m 
calculating a hash on the data fields. That way I can compare at the hash level 
and only update the record if the new entry hash doesn’t match.

Tony

> On Mar 10, 2022, at 7:03 PM, Michael Gentry <blackn...@gmail.com> wrote:
> 
> Hi Tony,
> 
> It has been a while since I've mapped natural primary keys, but Cayenne
> absolutely supports it.
> 
> If my memory cells are working, you will map your natural key as a Java
> attribute (in the ObjEntity section). Normally, Cayenne excludes the PK
> from your Java/ObjEntity, but you can manually add it and Cayenne is happy.
> 
> You //might// also need to fiddle with the PK generation section on the
> DbEntity side. For some reason, I'm remembering that specifying Cayenne
> Generated keys works better (or maybe not), even if you aren't generating
> keys. This is only if you are creating new records. Cayenne won't try to
> generate a key for an object that already has a key -- just make sure your
> new objects have a key before you commit changes.
> 
> mrg
> 
> 
>> On Thu, Mar 10, 2022 at 6:10 PM Tony Giaccone <t...@giaccone.org> wrote:
>> 
>> I'm writing an application where the primary key for a table is a natural
>> key and comes in as part of a data payload after making a call to a remote
>> system. I can be certain that this value is unique.  So I've modeled it in
>> the database and have it in the data model. Of course this means that in
>> the java object this field is absent.
>> 
>> I'm going to want to do selects on it, and comparisons to other fields. So
>> I really need it to be part of the model.  So is it best to just add it
>> into the java object.  So that it's part of the mapping or is there another
>> technique that is a better choice.
>> 
>> Just as an aside, let's not devolve into a discussion of should the key be
>> visible. I understand the pluses and minuses of that decision and for this
>> case, its really the right thing to do.
>> 
>> 
>> 
>> Tony Giaccone
>> 

Reply via email to