2011-05-20 23 views
1

可能重复:
Hibernate: different object with the same identifier value was already associated with the session这些Hibernate对象有何不同?

为什么一些对象我在Hibernate的异常得到出现这样当他们以@符号打印出来:

无法删除对象

[email protected]

但是,一些出现这样的:

org.hibernate.NonUniqueObjectException: 具有相同 标识符值不同的对象已经 与会话相关联: [db.item.model。库存#9369629]

带#号后的标识符?

回答

2

标识符后的#是在表中的对象的主键。

当两个具有相同标识符(主键)的对象被添加到会话中时,会发生NonUniqueObjectException。

[email protected]由默认的equals方法(即Object.equals())输出。

4

[email protected]指的是一个内存地址。

db.item.model.Inventory#9369629是指实体ID 9369629.

+0

但它们可以是相同的对象,不可以吗? – Rihards 2011-05-20 14:32:17

+0

他们肯定可以,只有与例外消息文本不一致。确定引用相同ID的最佳方法是使用调试器或将id属性写入控制台。 – Marcelo 2011-05-20 14:34:57

0

[email protected]是某个实例。 [db.item.model.Inventory#9369629]是两个或两个以上使用@Id 9369629的实例。