Я хочу использовать отношения «многие ко многим» с использованием пружинной загрузки JPA между User
и Role
сущностью.
Я смог добиться этого, используя код ниже, НО в моем требовании, мне нужно один дополнительный столбец в сводной таблице (users_to_role
).
@ManyToMany
@JoinTable(
name = "users_to_roles",
joinColumns = @JoinColumn(
name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
private List<Role> roles;
Вот мой новый код
User.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
@OneToMany(mappedBy="users", cascade = CascadeType.ALL)
private List<Role> roles;
//getters and setters here
}
Role.java
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy="roles", cascade = CascadeType.ALL)
private List<User> users;
//getters and setters here
}
UserRole.java
@Entity
@Table(name = "users_to_role")
public class UserRole {
@Id
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Id
@ManyToOne
@JoinColumn(name = "role_id")
private Role role;
private Date createdAt;
//getters and setters here
}
Может ли кто-нибудь помочь мне указать, что я делаю неправильно?
Вот стек ошибок:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Illegal use of mappedBy on both sides of the relationship: com.example.entities.Role.users