Двунаправленная ссылка в отношении @ManyToMany JPA - PullRequest
0 голосов
/ 27 октября 2018

Я только что нашел пример отношения @ManyToMany Hibernate на github, который заставил меня задуматься, как правильно его реализовать.Позвольте мне объяснить лучше.Вариант использования очень прост: у меня есть пользователь, который может иметь одну или несколько ролей.Изначально я думал, что это отношение между многими, но я нашел этот пример, который меня сильно смущает:

Users.java class

@Entity
@Table(name = "user")
public class Users {

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

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

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

    public Users() {
    }

    public Users(Users users) {
        this.email = users.getEmail();
        this.roles = users.getRoles();
        this.id = users.getId();
    }
  `// getters and setters

Role.java class

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

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "role_id")
    private int roleId;

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

    public Role() {
    }
    // getters and setters

Во-первых, он использует отношение OneToMany (и я не могу объяснить почему), а во-вторых, он не имеет ссылки на Users внутри класса Role.Кто-то знает почему и может мне это объяснить?Я бы пошел с отношениями ManyToMany, и я бы поместил Набор пользователей также в Role с аннотацией @ManyToMany. Здесь ссылка на git repo .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...