首页 > 解决方案 > Hibernate - 在查询中映射多个枚举集

问题描述

我有以下表格:

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

所以通过使用这个我们可以为用户分配多个角色。在Java中有UserRole枚举。如何加载具有分配角色的 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.

我究竟做错了什么?

标签: javahibernateenums

解决方案


推荐阅读