PrimaryKey obtained by permanentGlobalID() are not saved as the primaryKey on saveChanges().
I'm setting a global id as a reference for « soft relationship » (since it point to undefined object) instead of a « hard relationship » (usual when we store the pk).
The problem is that I get 2 primary key (yes 2 sequences number out of the database):
- the first come from the call to permanentGlobalID(), wich return 7985.
- the next come from the save of the object itself, it ask again for a sequence.
Result: the first reference is actually not pointing to the saved object!
Here is the code for the setter:
public void setReference(final ERXGenericRecord ref) {
EOKeyGlobalID pgid = ref.permanentGlobalID();
setReferenceGlobalID(ERXKeyGlobalID.globalIDForGID(pgid));
// added log to debug ...
final EOGlobalID gid = editingContext().globalIDForObject(ref);
log.debug("GlobalID: " + gid + " permanent: " + pgid);
}
give:
GlobalID: <EOTemporaryGlobalID: 0 0 127 0 0 1 0 0 -5 -116 1 0 0 0 1 69 -39 18 -94 -76 -125 18 82 -3> permanent: _EOIntegralKeyGlobalID[AGA_Participant (java.lang.Integer)7985]
It's a wonder project, all EOs (ultimately) inherit from ERXGenericRecord.
I'm using ERXEC default factory to get editingContext.
From the documentation it says it is supposed to work, so I guess I have something misconfigured.