У меня проблема с добавлением роли пользователя во время регистрации
Это моя диаграмма БД:
![enter image description here](https://i.stack.imgur.com/VD2y3.png)
И у меня есть следующие классы: первый - это роль объекта:
package application.model;
import lombok.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.persistence.*;
import java.util.List;
@NamedQueries({
@NamedQuery(name = User.GET_USERS, query = User.QUERY_GET_USERS),
})
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "users")
public class User {
public static final String GET_USERS = "User.get_users";
public static final String QUERY_GET_USERS = "select u from User u";
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
public int id;
@NotNull
@NotEmpty
@Column(name="firstname")
private String firstname;
@NotNull
@Column(name="lastname")
private String lastname;
@NotNull
@Column(name="email")
private String email;
@NotNull
@Column(name="password")
private String password;
@JoinTable
@OneToMany
private List<Role> roles;
}
второй объект - это роль:
package application.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "role")
public class Role {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
public int id;
@NotNull
@Column(name="name")
private String name;
}
Итак, у меня есть 3 роли в моем приложении, когда я регистрирую нового пользователя с пост-запросом:
{
"firstname": "imasdie5",
"lastname": "nazasdwisko5",
"email": "masdil",
"password": "pass",
"roles": [
{ "id":2 }
]
}
Первый пользователь зарегистрирован правильно, но когда я отправляю второй запрос с теми же role.id = 2, у меня есть:
ОШИБКА: нарушается значение дубликата ключа уникальное ограничение "uk_d9najy24fium4vkivgwjuf0hw" Подробно: ключ (role_id) = (2) уже существует.
В таблице dbeaver users_role имеют ограничение uk_d9najy24fium4vkivgwjuf0hw с типом UNIQUE_KEY, но не так, как это? Многие пользователи могут иметь одинаковую роль, поэтому мне необходимо ![enter image description here](https://i.stack.imgur.com/Vpb6z.png)
Все таблицы создаются в режиме гибернации. Таблица users_role не является сущностью в моем приложении, может быть, это должна быть сущность? Есть ли у вас какой-либо совет, что мне следует изменить, чтобы добавить одну роль для многих пользователей?