Hibernate不保存我新创建的对象

时间:2011-08-24 13:59:56

标签: hibernate persistence

我有一个非常简单的表结构: 表产品 product_id 名称属性。 表条形码 product_id (Products表的外键)和代码属性。

在我的代码中,我创建了一个Product对象的新实例:

Product product = new Product();

我保存了产品:

session.save(product);

稍后我创建了一个Barcode对象的新实例:

Barcode barcode = new Barcode();

并将产品与条形码相关联:

barcode.setProduct(product);

并尝试保存条形码:

session.save(barcode);

我得到了:

  

线程“main”中的异常org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话关联:

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

至少有几个想法:

  • 您已经映射了@Id字段而没有生成策略,并且您没有自己设置ID。
  • 如果您的条形码表实际上只有两列,那么您可能将product_id设置为@Id列,如果您要为同一产品创建两个Barcode对象,则会发生这种情况。

有关更多想法,请提供更多详细信息。

答案 1 :(得分:0)

就像JB说你的映射文件(和实际的代码)真的会有所帮助。现在你可以尝试添加:

session.flush()

后:

session.save(product)

我猜测hibernate试图“优化”此事务,并在保存条形码时再次保存相同的产品。

但这只是一种可能性。你的代码中有没有循环?