【问题标题】:Spring Boot JPA OneToMany and ManyToOne bring me all registers in JoinTableSpring Boot JPA OneToMany 和 ManyToOne 给我带来了 JoinTable 中的所有寄存器
【发布时间】:2020-10-23 08:06:05
【问题描述】:

您好,我正在使用 JPA,我需要使用 OneToMany 和 ManyToOne,它适用于一个寄存器,但是当我插入多个寄存器时,结果包含在可连接中注册的所有数据。

例子:

我有以下表,UserCompany,以及 Join 表 USER_COMPANY_REL

表用户

USER_ID
NAME
ADDRESS
...

餐桌公司

COMPANY_ID
NAME
WEB_SITE
...

USER_COMPANY_REL

REL_ID
USER_ID
COMPANY_ID

我有 3 个用户和 2 个公司的数据,如果我的 USER_COMPANY_REL 表中有一个用户与一个公司,它可以工作,如果我将同一用户与另一家公司一起工作,但当我将另一个用户与另一家公司,当我从某个用户(注册了一个或多个公司)那里获取数据时,结果是:用户信息加上在 Join 表中注册的公司数。

我的 Spring Boot 代码中有这个

类公司

...
 @ManyToOne
      @JoinTable(name = "USER_COMPANY_REL",
              joinColumns = {@JoinColumn(name = "COMPANY_ID", insertable = false,
                      updatable = false, referencedColumnName = "COMPANY_ID")},
              inverseJoinColumns = {@JoinColumn(name = "USER_ID", insertable = false,
                      updatable = false, referencedColumnName = "USER_ID")}
      )
    private User user;
...

类用户

...
@OneToMany
      @JoinTable(name = "USER_COMPANY_REL",
              joinColumns = {@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")},
              inverseJoinColumns = {@JoinColumn(name = "COMPANY_ID", referencedColumnName = "COMPANY_ID")}
      )
...

这是邮递员的结果

为什么会这样?你能帮帮我吗?

问候

【问题讨论】:

    标签: java oracle spring-boot jpa relationship


    【解决方案1】:

    首先在表和列 COMPANY_ID 和 USER_ID 中使用自动递增列(例如 ID,或使用任何其他自动生成的 id 策略)作为唯一列以避免重复。您应该只在 Company 类中使​​用 @JoinColumns。 这是一个例子:

    @ManyToOne
    @JoinColumns(@JoinColumn(name = "COMPANY_ID", insertable = false,
                      updatable = false, referencedColumnName = "COMPANY_ID"),
                 @JoinColumn(name = "USER_ID", insertable = false,
                      updatable = false, referencedColumnName = "USER_ID"))
    private User user;
    

    另一方面(在用户类中)你应该只有这个:

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    List<Company> companies=new LinkedList<Company>();
    

    可以是ListSet 的公司。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      相关资源
      最近更新 更多