How to solve “Temporary ID hasn't been replaced on commit” with Cayenne

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

  •  24-10-2019
  •  | 
  •  

Pergunta

When committing changes to a Apache Cayenne context, I get an exception like the following.

org.apache.cayenne.CayenneRuntimeException: [v.3.0.1 Sep 06 2010 15:09:38]
Temporary ID hasn't been replaced on commit

Why does this exception occur?

Foi útil?

Solução

You are trying to commit an object for which Cayenne does not know how to generate a permanent id. This in turn typically happens when the underlying table has no primary key defined.

To solve the problem, do one of the following.

  • Add a primary key to the underlying table, either a surrogate key (new generated id column) or a natural key (combination of existing columns).
  • Set your own permanent id on the object(s) in question using the PersistentObject.setObjectID() method.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top