如何使用Cayenne解决“临时ID尚未被替换”的问题

时间:2011-01-24 17:18:41

标签: apache-cayenne

当提交对Apache Cayenne上下文的更改时,我得到如下的异常。

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

为什么会发生此异常?

1 个答案:

答案 0 :(得分:2)

您正在尝试提交Cayenne不知道如何生成永久ID的对象。当基础表没有定义主键时,通常会发生这种情况。

要解决此问题,请执行以下操作之一。

  • 将主键添加到基础表,可以是代理键(新生成的id列)或自然键(现有列的组合)。
  • 使用PersistentObject.setObjectID()方法在相关对象上设置您自己的永久ID。