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