Как я могу отобразить многие многие напрямую, когда есть несколько внешних ключей? - PullRequest
0 голосов
/ 05 июля 2019

enter image description here

У меня есть отношения, как на картинке выше, и я попытался отобразить их напрямую, бросив таблицу user_role_project, как показано ниже.

class user {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tbl_user_role_project",
        joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Set<Role> roles;

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tbl_user_role_project",
        joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"))
private Set<Project> projects;
}

class project {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tbl_user_role_project",
        joinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"))
private Set<User> users;

@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tbl_user_role_project",
        joinColumns = @JoinColumn(name = "project_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Set<Role> roles;
}

То же самое с настольной ролью. Из табличного проекта я могу получить все пользователи и роли успешно, но проблема при попытке добавить новый проект.

Вместо добавления нового проекта и добавление нового единого отношения в таблицу user_role_project . Это исключение, потому что он пытается вставить две строки в таблицу user_role_project .

enter image description here

Ожидается после добавления проекта.

enter image description here

В: Как я могу сопоставить множество трех таблиц: пользователь, роль, проект без таблицы user_role_project? Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...