Come risolvere “Temporary ID non è stato sostituito il commit” con Cayenne

StackOverflow https://stackoverflow.com/questions/4784929

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

È stato utile?

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