Как работать со связями many2one, one2many в hibernate?

Рейтинг: 0Ответов: 1Опубликовано: 05.01.2015

У меня есть сущность 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;

    <геттеры, сеттеры>
}

Ответы

Ответов пока нет.