Hibernate - отображать несколько перечислений в запросе - PullRequest
1 голос
/ 21 января 2020

У меня есть следующие таблицы:

user
- id BIGINT
- name VARCHAR
user_roles
- id BIGINT
- user_id BIGINT - FK TO USER
- name VARCHAR (name of the role)

, поэтому с помощью этого мы можем назначить пользователю несколько ролей. В Java есть UserRole enum. Как я могу загрузить в Hibernate пользовательские записи с назначенными ролями?

У меня есть следующий код

    private Set<UserRole> userRoles;

    @ElementCollection(targetClass=UserRole.class)
    @Enumerated(EnumType.STRING)
    @CollectionTable(name="user_role")
    @Column(name="name")
    public Set<UserRole> getUserRoles() {
        return userRoles;
    }
    public void setUserRoles(Set<UserRole> userRoles) {
        this.userRoles= userRoles;
    }

, и я делаю запрос следующим образом:

        CriteriaBuilder criteriaBuilder = sessionFactory.getCurrentSession().getCriteriaBuilder();
        CriteriaQuery<User> criteriaQuery = criteriaBuilder.createQuery(User.class);
        Root<User> queryRoot = criteriaQuery.from(User.class);
        queryRoot.join("userRoles", JoinType.LEFT);

        TypedQuery<User> query = sessionFactory.getCurrentSession().createQuery(criteriaQuery);

        return query.getResultList();

Запрос выполняется но когда я пытаюсь получить доступ к ролям Set, он говорит

com.sun.jdi.InvocationException occurred invoking method.

Что я делаю не так?

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