我们的系统中有两个实体,如下所示:
Invoice:[InvoiceID, OrgID] 是表示为 bean 的主键,并使用
@IdClass
注解与 Invoice 关联WorkflowStates:是使用注解
WorkflowStateId
定义的主键列。@Id
在这两个实体中,ID 字段(InvoiceID、WorkflowStateId)是使用 DB 序列自动生成的。
在对新创建的 Invoice 实例调用 persist 时,当我们将 InvoiceID 设置为 时-1
,实例会被持久化并且 ID 会正确生成。
但是,当在 WorkflowStateID 设置为的新创建的 WorkflowStates 实例上调用 persist 时-1
,persist()
调用会引发异常:
org.hibernate.PersistentObjectException: detached entity passed to persist: <Entity Class>
我在搜索中找不到太多,如果persist()
方法对具有单列作为 PK 的实体和具有复合 PK 的实体的工作方式有任何差异。有人知道更多吗?