Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate不保存我新创建的对象_Hibernate_Persistence - Fatal编程技术网

Hibernate不保存我新创建的对象

Hibernate不保存我新创建的对象,hibernate,persistence,Hibernate,Persistence,我有一个非常简单的表结构: 带有产品id和名称属性的表产品。 表条形码带有产品id(产品表外键)和代码属性 在我的代码中,我创建了产品对象的新实例: Product product = new Product(); 我保存产品: session.save(product); 稍后,我将创建条形码对象的新实例: Barcode barcode = new Barcode(); 并将产品与条形码关联: barcode.setProduct(product); session.save(bar

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

在我的代码中,我创建了产品对象的新实例:

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的另一个对象。它必须是其他对象。