我有一个非常简单的表结构: 表产品, 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:具有相同标识符值的另一个对象已与会话关联:
有什么想法吗?
答案 0 :(得分:3)
至少有几个想法:
有关更多想法,请提供更多详细信息。
答案 1 :(得分:0)
就像JB说你的映射文件(和实际的代码)真的会有所帮助。现在你可以尝试添加:
session.flush()
后:
session.save(product)
我猜测hibernate试图“优化”此事务,并在保存条形码时再次保存相同的产品。
但这只是一种可能性。你的代码中有没有循环?