这些Hibernate对象有何不同?

时间:2011-05-20 14:28:07

标签: java hibernate hibernateexception

  

可能重复:
  Hibernate: different object with the same identifier value was already associated with the session

为什么我在Hibernate异常中遇到的某些对象在使用@符号打印出来时会显示如下:

无法删除对象

  

db.item.model.Inventory@21d321bb

但有些看起来像这样:

  

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

使用#符号后面的标识符

3 个答案:

答案 0 :(得分:4)

db.item.model.Inventory@21d321bb是指内存地址。

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

答案 1 :(得分:2)

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

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

db.item.model.Inventory@21d321bb由默认的equals方法输出,即Object.equals()。

答案 2 :(得分:0)

db.item.model.Inventory@21d321bb是某个实例。 [db.item.model.Inventory#9369629]是两个或多个@Id 9369629的实例。