@PostConstruct и EntityManager запрос
Всем привет. в проекте Spring MVC Security Hibernate (без boot) пытаюсь создать роли и админа по умолчанию через @PostConstruct. Может кто мне объяснить в каком классе инициализировать PostConstruct метод и что в нем писать, чтобы добавить в бд роли и админа?
Это максимум что я нашел в интернете, и конечно метод не работает:
@PostConstruct
private void init(){
TransactionTemplate tmpl = new TransactionTemplate(txManager);
tmpl.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
Set<Role> roles = new HashSet<>();
roles.add(new Role(1,"ROLE_ADMIN"));
User admin = new User(1,"ADMIN",1,1,"100");
admin.setRoles(roles);
em.persist(admin);
}
});
}
Юзер класс:
@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) {
this.id=id;
this.name = name;
this.age = age;
this.weight = weight;
this.password = password;
}
Класс Роль:
@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;
}