Come risolvere “Temporary ID non è stato sostituito il commit” con Cayenne
-
24-10-2019 - |
Domanda
Quando commettere modifiche a un contesto Apache Cayenne, ottengo un'eccezione simile alla seguente.
org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Sep 06 2010 15:09:38]
Temporary ID hasn't been replaced on commit
Perché si verifica questa eccezione?
Soluzione
Si sta tentando di commettere un oggetto per il quale Cayenne non sa come generare un id permanente. Questo a sua volta avviene tipicamente quando la tabella sottostante ha alcuna chiave primaria definita.
Per risolvere il problema, effettuare una delle seguenti.
- Aggiungere una chiave primaria alla tabella sottostante, sia una chiave surrogata (colonna id nuovo generato) o una chiave naturale (combinazione di colonne esistenti).
- Imposta il tuo ID permanente per l'oggetto (s) in questione utilizzando il metodo
PersistentObject.setObjectID()
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow