@PostConstruct не коммитит роли, админа и юзера

Всем привет. У меня Spring MVC Secuirty Hibernate проект, где реализованы доступ по ролям (админ, юзер), вывод таблицы и crud. У меня все работает, только если я изначально вручную добавлю роль админа, админа и маппинг в mysql. Хотел чтобы с помощью @PostConstruct сделать, чтобы при запуске роли, админ и юзер сами создавались и были добавлены в БД. У меня связь между таблицами User и Role ManyToMany. Я видимо не правильно создаю роли или юзеров. Помогите пожалуйста разобраться с этим

@PostConstruct
private void postConstruct() {

    Role role1 = new Role(1,"ROLE_ADMIN");
    Role role2 = new Role(2,"ROLE_USER");
    roleDAO.addRole(role1);
    roleDAO.addRole(role2);

    Set<Role> roles_admin = new HashSet<>();
    roles_admin.add(roleDAO.getRoleById(1));
    User admin = new User(1,"ADMIN",1,1,
            "$2a$10$9oMWhHQfzAkAILlfFtgNm.xiSdg2WOMDnVcQuoRoAdonbSFHcf3Tm", roles_admin);
    userDAO.addUser(admin);

    Set<Role> roles_user = new HashSet<>();
    roles_user.add(roleDAO.getRoleById(2));
    User user = new User(2,"USER",1,1,
            "$2a$10$9oMWhHQfzAkAILlfFtgNm.xiSdg2WOMDnVcQuoRoAdonbSFHcf3Tm", roles_user);
    userDAO.addUser(user);

}

Юзер

@Entity
@Table(name = "user")
public class User implements UserDetails {

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

@Column(name = "name")
private String name;

@Column(name = "age")
private int age;

@Column(name = "weight")
private int weight;

@Column(name = "password")
private String password;

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

public User(){}

public User(int id, String name, int age, int weight, String password, Set<Role> roles) {
    this.id=id;
    this.name = name;
    this.age = age;
    this.weight = weight;
    this.password = password;
    this.roles = roles;
}

Роль

@Entity
@Table(name = "role")
public class Role implements GrantedAuthority {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;

private String name;

@ManyToMany(mappedBy = "roles")
private Set<User> users;

public Role() {
}

public Role(int id) {
    this.id = id;
}

public Role(int id, String name) {
    this.id = id;
    this.name = name;
}

ДАО Роли

@Repository
public class RoleDAOImp implements RoleDAO{

@PersistenceContext(unitName = "entityManagerFactory")
private EntityManager em;

@Override
public Role getRoleById(int id){
    TypedQuery<Role> q = em.createQuery(
            "SELECT u FROM Role u WHERE u.id = :id",
            Role.class
    );
    q.setParameter("id", id);
    return q.getResultList().stream().findAny().orElse(null);
}

@Override
public void addRole(Role role){
    em.persist(role);
}

Ответы (0 шт):