CriteriaQuery and metamodel usage (java + hibernate)

I have User entity and UserLoginInfo class to be used as a wrapper for User entity.

public class User implements Serializable {
    private Long userId;
    private String lyceumId;
    private String password;
    private String firstName;
    private String lastName;
    private Timestamp lastLoginDate;
    private Set<String> privileges;

    //getter-setters
}
<hibernate-mapping package="model.entities">

<class name="User" table="Users">
    <id name="userId" column="user_id">
        <generator class="native"/>
    </id>

    <set name = "privileges" table="UserPrivileges" lazy="false">
        <key column = "user_id"/>
        <element column="privilege" type="string"/>
    </set>

    <property name = "lyceumId" column = "lyceum_id" type = "string"/>
    <property name = "password" column = "password" type = "string"/>
    <property name = "firstName" column = "first_name" type = "string"/>
    <property name = "lastName" column = "last_name" type = "string"/>
    <property name = "lastLoginDate" column = "last_login_date" type = "timestamp"/>

</class>

public class UserLoginInfo {
    private Long userId;
    private String lyceumId;
    private String password;
    private Set<String> privileges;

    //getter-setters
}

There is also a static metamodel User_

@StaticMetamodel( User.class )
public class User_ {
    public static volatile SingularAttribute<User, Long> userId;
    public static volatile SingularAttribute<User, String> lyceumId;
    public static volatile SingularAttribute<User, String> password;
    public static volatile SingularAttribute<User, String> firstName;
    public static volatile SetAttribute<User, String> privileges;
    public static volatile SingularAttribute<User, String> lastName;
    public static volatile SingularAttribute<User, Timestamp> lastLoginDate;
}

Now i want a method that returns UserLoginInfo object using metamodel. I tried to do this, but it doesn't work.

public UserLoginInfo getUserLoginInfoByLyceumId(String lyceumId) throws SQLException {
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
        CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(UserLoginInfo.class);
        Root<User> userRoot = criteriaQuery.from(User.class);
        criteriaQuery.select(
                criteriaBuilder.construct(
                        UserLoginInfo.class,
                        userRoot.get(User_.userId),
                        userRoot.get(User_.lyceumId),
                        userRoot.get(User_.password),
                        userRoot.get(User_.privileges)
                )
        );
        criteriaQuery.where(criteriaBuilder.equal(userRoot.get(User_.lyceumId), lyceumId));

        List<UserLoginInfo> userLoginInfoList = session.createQuery(criteriaQuery).getResultList();
        transaction.commit();
        session.close();
}

Hibernate creates invalid query(copied from logs)

Hibernate: 
select
    user0_.user_id as col_0_0_,
    user0_.lyceum_id as col_1_0_,
    user0_.password as col_2_0_,
    . as col_3_0_ 
from
    Users user0_ 
inner join
    UserPrivileges privileges1_ 
        on user0_.user_id=privileges1_.user_id 
where
    user0_.lyceum_id=?

Please, tell me how do I get sets with one-to-many relationship(e.g. Set<String> privileges in User/UserLoginInfo classes) + the correct way to use wrappers in Hibernate. I will be glad to any help.

Thank you in advance.