Как работать со связями many2one, one2many в hibernate?
У меня есть сущность User и сущность UserRole. Они связаны отношением one to many (у одного пользователя может быть несколько ролей). Как мне, например, добавить пользователю роль(1)? или как создать нового пользователя с уже добавленной ролью(2)?
Мне кажется, что в случае
(1) нужно просто создать объект UserRole, поставить ему нужный uid и сохранить в бд. правильно?
(2.а) создаём пользователя, сохраняем его в бд, потом как-то (как?) получаем его uid, повторяем пункт (1) так сработает?
(2.б) создаём пользователя, добавляем ему в private Set<UserRole> roles новый UserRole, сохраняем его в бд. а так?
В общем, просветите, пожалуйста.
На всякий случай User.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "uid")
private Integer id;
@Column(name = "username")
private String username;
@Column(name = "email")
private String email;
@Column(name = "password")
private String password;
@Column(name = "study_group")
private Integer studyGroup;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user")
private Set<UserRole> userRoles = new HashSet<UserRole>(0);
<геттеры, сеттеры>
}
и UserRole.java
@Entity
@Table(name = "user_roles", uniqueConstraints = @UniqueConstraint(columnNames = {"role_id", "uid"}))
public class UserRole {
@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "role_id", unique = true, nullable = false)
private int roleId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "uid", nullable = false)
private User user;
@Column(name = "role", nullable = false, length = 45)
private String role;
<геттеры, сеттеры>
}
Источник: Stack Overflow на русском