У меня есть следующие таблицы:
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.
Что я делаю не так?