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 >>