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 >