【问题标题】:OneToMany Bad primary key columnOneToMany 错误的主键列
【发布时间】:2019-07-11 01:53:01
【问题描述】:

我在应用程序中新创建的表有问题。我想在dashboard_id 上设置主键,但关系有问题。为什么我会得到这个?我有 OneToMany、一个仪表板、许多组。我应该怎么办?它出什么问题了? 在 Dashboard_groups 表中,我将 groups_id 作为 PK,我想要仪表板 ID。

@ManyToOne(targetEntity = Dashboard.class, fetch = FetchType.EAGER)
@JoinTable(name = "dashboard_groups", joinColumns = {@JoinColumn(name = "groups_id")},
        inverseJoinColumns = {@JoinColumn(name = "dashboard_id", referencedColumnName = "id")})
@JsonBackReference(value = "group- dashboard")
private Dashboard dashboard;
@OneToMany(mappedBy = "dashboard", cascade = CascadeType.ALL)
    @JsonManagedReference(value = "groups- dashboard")
    private List<Group> groups= new ArrayList<>();


【问题讨论】:

    标签: java spring hibernate spring-boot spring-data-jpa


    【解决方案1】:

    最简单的方法是不使用连接表。只需在 Group 中使用外键即可。

    @Entity
    class Dashboard {
    
        @OneToMany(mappedBy = "dashboard", cascade = CascadeType.ALL)
        private List<Group> groups;
    
    }
    
    @Entity
    class Group{
    
        @ManyToOne(fetch = FetchType.LAZY)
        private Dashboard dashboard;
    
    }
    

    如果您想使用连接表,则不应使用mappedBy

    @Entity
    class Dashboard {
    
        @OneToMany(cascade = CascadeType.ALL)
        private List<Group> groups;
    
    }
    
    @Entity
    class Group{
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 2011-02-06
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多