Question

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?

Was it helpful?

Solution

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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top