Hibernate不保存我新创建的对象
我有一个非常简单的表结构: 带有产品id和名称属性的表产品。 表条形码带有产品id(产品表外键)和代码属性 在我的代码中,我创建了产品对象的新实例:Hibernate不保存我新创建的对象,hibernate,persistence,Hibernate,Persistence,我有一个非常简单的表结构: 带有产品id和名称属性的表产品。 表条形码带有产品id(产品表外键)和代码属性 在我的代码中,我创建了产品对象的新实例: Product product = new Product(); 我保存产品: session.save(product); 稍后,我将创建条形码对象的新实例: Barcode barcode = new Barcode(); 并将产品与条形码关联: barcode.setProduct(product); session.save(bar
Product product = new Product();
我保存产品:
session.save(product);
稍后,我将创建条形码对象的新实例:
Barcode barcode = new Barcode();
并将产品与条形码关联:
barcode.setProduct(product);
session.save(barcode);
并尝试保存条形码:
barcode.setProduct(product);
session.save(barcode);
我得到:
线程“main”org.hibernate.unUniqueObjectException中的异常:具有相同标识符值的不同对象已与会话关联:
有什么想法吗?像JB说的那样,你的映射文件(和实际的代码)会很有帮助。现在,您可以尝试添加:
session.flush()
之后:
session.save(product)
我猜hibernate正在尝试“优化”此事务,并在保存条形码时再次保存相同的产品
但这只是一种可能性。您的代码中有循环吗?就像JB所说的那样,您的映射文件(以及实际代码)将非常有用。现在,您可以尝试添加:
session.flush()
之后:
session.save(product)
我猜hibernate正在尝试“优化”此事务,并在保存条形码时再次保存相同的产品
但这只是一种可能性。您的代码中有循环吗?至少有几个想法:
- 您映射了一个没有生成策略的字段,并且您没有自己设置id
- 如果您的条形码表实际上只有两列,那么您可能正在将product_id设置为@id列,并且如果要为同一产品创建两个条形码对象,则会发生这种情况
要了解更多想法,请提供更多细节。至少有几个想法:
- 您映射了一个没有生成策略的字段,并且您没有自己设置id
- 如果您的条形码表实际上只有两列,那么您可能正在将product_id设置为@id列,并且如果要为同一产品创建两个条形码对象,则会发生这种情况
有关更多想法,请提供更多详细信息。向我们展示您的真实代码,以及这两个实体的代码和映射。向我们展示您的真实代码,以及这两个实体的代码和映射。NH抱怨具有相同id的另一个对象。它必须是其他对象。NH抱怨具有相同id的另一个对象。它必须是其他对象。