OneToMany Плохой столбец первичного ключа - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с новой созданной таблицей в приложении.Я хочу установить первичный ключ на dashboard_id, и у меня проблема с отношением.Почему я это понимаю?У меня есть OneToMany, одна панель инструментов, много групп.Что я должен делать?Что с этим не так?В таблице Dashboard_groups я указал groups_id как PK, и мне нужен идентификатор dashboard.

@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<>();


Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Самый простой способ - не использовать таблицу соединений.Просто используйте внешний ключ в 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{


}
0 голосов
/ 13 февраля 2019

Эта часть: joinColumns = {@JoinColumn(name = "groups_id")} не хватает referencedColumnName, вам нужно указать его, как в следующем @JoinColumn:

inverseJoinColumns = {@JoinColumn(name = "dashboard_id", referencedColumnName = "id")}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...