While developing my Spring Boot application I had to drop my database and have Hibernate generate it again with hibernate.hbm2ddl.auto=update. After that I want
If you use @OneToMany without @JoinColumn Hibernate creates a join table
@OneToMany(fetch = FetchType.EAGER, targetEntity = Skill.class)
@Cascade({CascadeType.DETACH})
private Set children;
change it to
@OneToMany(fetch = FetchType.EAGER)
@Cascade({CascadeType.DETACH})
@JoinColumn
private Set children;
Please, don't use unnecessary mapping properties — targetEntity = Skill.class
And I am not sure you need to use this association
private Skill parent;
It is incorrect to associate User and Role using the @OneToMany association, because of User can have multiple roles and each role can belong to multiple users. Use @ManyToMany for such an association.
An example of an association between User and Role