У меня есть базовое приложение SpringBoot 2.0.4.RELEASE.используя Spring Initializer, JPA, встроенный Tomcat, шаблонизатор Thymeleaf и пакет в качестве исполняемого файла JAR.
У меня есть объект User с ролями:
@Entity
@Table(name="t_user")
public class User implements Serializable, UserDetails {
@ManyToMany(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
@JoinTable(
name="t_user_role",
joinColumns=@JoinColumn(name="user_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="role_id", referencedColumnName="id"))
private Set<Role> roles = new HashSet<>();
..
}
Когда я запускаю приложение.Я создаю все роли:
roleService.save(new Role(RolesEnum.USER.getRoleName()));
roleService.save(new Role(RolesEnum.ADMIN.getRoleName()));
Затем я создаю пользователя с ролью USER:
User user1 = new User();
Role role = roleService.findByName(RolesEnum.USER.getRoleName());
user.getRoles().add(role);
userService.save(user);
, но когда я создаю другого пользователя с той же ролью:
User user2 = new User();
Role role = roleService.findByName(RolesEnum.USER.getRoleName());
user2.getRoles().add(role);
user2Service.save(user);
Я получил эту ошибку:
Multiple representations of the same entity [com.tdk.backend.persistence.domain.backend.Role#1] are being merged. Detached: [com.tdk.backend.persistence.domain.backend.Role@5295d3de]; Detached: [com.tdk.backend.persistence.domain.backend.Role@2b3d9d32]
В объекте Role у меня нет объявленных полевых пользователей, поскольку я не получу всех пользователей на основе роли