Управление многими отношениями с Hibernate - PullRequest
0 голосов
/ 25 ноября 2018

Я делаю простое весеннее веб-приложение MVC и использую Hibernate с Oracle.У меня есть две модели - пользователь и роль, и я хочу определить отношения между многими.Я видел несколько учебных пособий и определил свои модели, как показано ниже:

Это User класс:

@Entity
@Table(name = "AppUser")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
    @SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
    @Column(name = "Id")
    private int id;

    @Column(name = "Username")
    private String username;

    @Column(name = "Password")
    private String password;


    @ManyToMany
    (
        fetch = FetchType.LAZY,
        cascade = {
                      CascadeType.PERSIST,
                      CascadeType.MERGE
                  }
    )
    @JoinTable
    (
        name = "user_roles", 
        joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, 
        inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") }
    )
    private Set<Role> roles = new HashSet<Role>(0);

    //getters and setters....
} 

Это Role class:

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

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_sequence")
    @SequenceGenerator(name = "id_sequence", sequenceName = "ID_SEQ")
    private int id;

    private String role;

    @ManyToMany
    (
        fetch = FetchType.LAZY, 
        cascade = {
                      CascadeType.PERSIST,
                      CascadeType.MERGE
                  },
        mappedBy = "roles"
    )
    private Set<User> users;

    //getters and setters....
}

Когда я запускаю это приложение на сервере, я получаю следующую ошибку:

enter image description here

Эта ошибкаговорит, что таблица не существует, поэтому мне интересно, стоит ли создавать ее вручную (я так не думаю) или я что-то здесь упускаю?

1 Ответ

0 голосов
/ 25 ноября 2018

Просто нужно поместить @ManyToMany только в одном месте.

Пожалуйста, удалите @ManyToMany в роли.Вы можете проверить ссылку ниже, чтобы иметь дело с @ManyToMany, используя базу данных Oracle.Я надеюсь, что это полезно:

https://gerardnico.com/jpa/many-to-many#oracle_database

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