У меня есть отношения, как на картинке выше, и я попытался отобразить их напрямую, бросив таблицу 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 .
Ожидается после добавления проекта.
В: Как я могу сопоставить множество трех таблиц: пользователь, роль, проект без таблицы user_role_project?
Большое спасибо.