当前位置: 首页 > 知识库问答 >
问题:

JPA-一对多合并问题

范安歌
2023-03-14

现在,如果我在商品列表中添加第二个商品,我会出现以下错误:

菜单[menuid=1,menu_name=dsad,menu_description=null,类别=[category_id=1,categoryname=A,goods=[GoodsImp[id=1,Brand=asd,createddate=Mon Jan 22 18:26:35 ART 2018],价格=3.0,description=asd,type=product]],GoodsImp[id=null,Brand=dsad,createddate=null],价格=33333.0,description=SD,type=product]]],类别[category_id=2,categoryname=B,goods=[]]],business=2]

----------冬眠:

/* load models.menu.Menu */ select
    menu0_.MENU_ID as MENU_ID1_7_1_,
    menu0_.BUSINESS_ID as BUSINESS2_7_1_,
    menu0_.MENU_DESCRIPTION as MENU_DES3_7_1_,
    menu0_.MENU_NAME as MENU_NAM4_7_1_,
    categories1_.Menu_MENU_ID as Menu_MEN1_8_3_,
    category2_.CATEGORY_ID as categori2_8_3_,
    category2_.CATEGORY_ID as CATEGORY1_2_0_,
    category2_.CATEGORY_NAME as CATEGORY2_2_0_
from
    MENUES menu0_
left outer join
    MENUES_CATEGORIES categories1_
        on menu0_.MENU_ID=categories1_.Menu_MENU_ID
left outer join
    Categories category2_
        on categories1_.categories_CATEGORY_ID=category2_.CATEGORY_ID
where
    menu0_.MENU_ID=? Hibernate:
/* load models.menu.Product */ select
    product0_.GOODS_ID as GOODS_ID2_6_0_,
    product0_.GOODS_BRAND as GOODS_BR3_6_0_,
    product0_.GOODS_CREATED as GOODS_CR4_6_0_,
    product0_.GOODS_DESCRIPTION as GOODS_DE5_6_0_,
    product0_.GOODS_IMAGE as GOODS_IM6_6_0_,
    product0_.GOODS_PRICE as GOODS_PR7_6_0_
from
    GOODS product0_
where
    product0_.GOODS_ID=?
    and product0_.DTYPE='PRODUCT'

Hibernate:

/* insert models.menu.Product
    */ insert
    into
        GOODS
        (GOODS_BRAND, GOODS_CREATED, GOODS_DESCRIPTION, GOODS_IMAGE, GOODS_PRICE, DTYPE)
    values
        (?, ?, ?, ?, ?, 'PRODUCT') Hibernate:
select
    goods0_.GOODS_ID as GOODS_ID2_6_0_,
    goods0_.GOODS_ID as GOODS_ID2_6_1_,
    goods0_.GOODS_BRAND as GOODS_BR3_6_1_,
    goods0_.GOODS_CREATED as GOODS_CR4_6_1_,
    goods0_.GOODS_DESCRIPTION as GOODS_DE5_6_1_,
    goods0_.GOODS_IMAGE as GOODS_IM6_6_1_,
    goods0_.GOODS_PRICE as GOODS_PR7_6_1_,
    goods0_.GOODS_PRICE_TYPE as GOODS_PR8_6_1_,
    goods0_.DTYPE as DTYPE1_6_1_
from
    GOODS goods0_
where
    goods0_.GOODS_ID=? Hibernate:
select
    goods0_.GOODS_ID as GOODS_ID2_6_0_,
    goods0_.GOODS_ID as GOODS_ID2_6_1_,
    goods0_.GOODS_BRAND as GOODS_BR3_6_1_,
    goods0_.GOODS_CREATED as GOODS_CR4_6_1_,
    goods0_.GOODS_DESCRIPTION as GOODS_DE5_6_1_,
    goods0_.GOODS_IMAGE as GOODS_IM6_6_1_,
    goods0_.GOODS_PRICE as GOODS_PR7_6_1_,
    goods0_.GOODS_PRICE_TYPE as GOODS_PR8_6_1_,
    goods0_.DTYPE as DTYPE1_6_1_
from
    GOODS goods0_
where
    goods0_.GOODS_ID=? Hibernate:



   /* update  models.menu.Product */ update
        GOODS
    set
        GOODS_BRAND=?,
        GOODS_CREATED=?,
        GOODS_DESCRIPTION=?,
        GOODS_IMAGE=?,
        GOODS_PRICE=?
    where
        GOODS_ID=? Hibernate:
/* create one-to-many row models.menu.Category.goods */ update
    GOODS
set
    GOODS_ID=?
where
    GOODS_ID=? [warn] o.h.e.j.s.SqlExceptionHelper - SQL Error: 1062, SQLState: 23000 [error] o.h.e.j.s.SqlExceptionHelper - Duplicate

关键字“Primary”[错误]应用程序的条目“|1”-

共有1个答案

弘涛
2023-03-14

我可以修好它。

问题是,一对多的关系有一个@joincolumn而不是@joincable。这就是问题,当你代码数小时,你只是没有看到明显的。

感谢大家。

 类似资料:
  • 问题内容: 将其发布在这里是因为我在这里没有太大的兴趣:http : //www.java- forums.org/jpa/96175-openjpa-one-many-within-one-many-merge- problems.html 试图找出这是OpenJPA的问题还是我做错了… 尝试使用OpenJPA更新包含与另一个实体具有一对多关系的实体时,遇到一个问题。这是我正在谈论的简单示例:

  • 问题内容: 我已经建立了一个简单的多对多关系帐户:Hibernate角色,但是当我在添加角色后尝试在单元测试中保存帐户时,出现UnsupportedOperationException异常: 这是怎么了 我的实体设置有问题吗?或者这是hibernate或JPA限制,迫使我将m:m关系分解为3:n关系,也为m:n关系表建模(我想避免这种情况,因为它没有任何关系)附加信息)。我已经在原型中为其他1:n

  • 我试图添加一个到我的NestJS应用程序使用TypeORM。我已经声明了一个实体和一个实体,其中一个到多个关系。我可以添加这个人和他们的地址,但是当我试图访问一个人(或所有人)时,我得到一个错误: 我不确定发生了什么,因为我遵循了TypeORM文档中的这个示例,了解如何设置多通和一通的关系。不过,我注意到地址表中有一行,但是列仍然是。您可以看到和文件,以及将这些项目添加到数据库的服务。 任何提示,

  • 主要内容:@ManyToOne 示例,程序输出结果多对一映射表示实体集合可以与相似实体关联的单值关联。 因此,在关系数据库中,实体的多于一行可以引用另一个实体的相似行。 完整的项目目录结构如下所示 - @ManyToOne 示例 在这个例子中,我们将创建一个学生和图书库之间的多对一关系,多个学生可以发布同一本书。 这个例子包含以下步骤 - 第1步: 在包中创建一个实体类,包含学生ID(s_id)和学生姓名(s_name),其中包含一个包含库类型对

  • 主要内容:@OneToMany 示例,程序输出结果一对多映射进入集合值关联的类别,其中实体与其他实体的集合关联。 因此,在这种类型的关联中,一个实体的实例可以映射到另一个实体的任意数量的实例。 完整的项目目录结构如下所示 - @OneToMany 示例 在这个例子中,我们将创建一个学生和图书库之间的一对多系,这样一个学生能发放多种类型的图书。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,它包含学生ID(s_id),学生姓名(s_na

  • 我想通过向个人实体添加地址列表来扩展使用REST访问JPA数据的示例。因此,我添加了一个带有注释的列表地址: 地址类是一个非常简单的类: 最后,我添加了AddressRepository界面: 然后我试着给一个人发一些地址: 我得到的错误是: 创建一对多和多对多关系并向其发布json对象的正确方法是什么?