Сохраните данные в таблице «многие ко многим» - PullRequest
1 голос
/ 01 июля 2019

Основной стол имеет аннотацию ManyToMany:

@ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(
            name = "user_role",
            joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "role_id", referencedColumnName = "id")})
    private List<Role> roles;

И второй:

@ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)
    private List<User> users;

Теперь он идеален и работает отлично.Но когда я хотел бы сохранить данные:

 @Override
public void saveUser(User user) {

    Session currentSession = entityManager.unwrap(Session.class);

    Role role = getRoleByName(RoleName.ROLE_ADMIN);
    user.setRoles(Collections.singletonList(role));
    role.setUsers(Collections.singletonList(user));
    currentSession.saveOrUpdate(user);
}

public Role getRoleByName(RoleName name) {
    Session currentSession = entityManager.unwrap(Session.class);
    Query query = currentSession.createQuery("FROM Role where name =:name");
    query.setParameter("name", name);
    return (Role) query.uniqueResult();
}

Данные не были сохранены в базе данных.Возможно, мне следует добавить информацию об отношении в методе saveUser.

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