开发者

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

开发者 https://www.devze.com 2023-02-06 05:35 出处:网络
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]

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?


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.
0

精彩评论

暂无评论...
验证码 换一张
取 消