Hibernate:使用HibernateTempate映射和取消映射的内部联接表

Hibernate:使用HibernateTempate映射和取消映射的内部联接表,hibernate,many-to-many,Hibernate,Many To Many,我有以下表格: USER ID VARCHAR(32) INTEGER NOT NULL ROLE ID INTEGER NOT NULL USERROLE /*Many to Many*/ USER_ID VARCHAR(32) NOT NULL ROLE_ID INTEGER NOT NULL 我使用注释将DB表映射到我的类 /* Mapping for USER table */ @Entity @Table (name="USER") public

我有以下表格:

USER
    ID VARCHAR(32) INTEGER NOT NULL

ROLE
    ID INTEGER NOT NULL

USERROLE /*Many to Many*/
    USER_ID VARCHAR(32) NOT NULL
    ROLE_ID INTEGER NOT NULL
我使用注释将DB表映射到我的类

/* Mapping for USER table */
@Entity
@Table (name="USER")
public class User{
    @Id
    @Column (name="ID")
    private String id;

    @ManyToMany 
    @JoinTable (name="USERROLE", joinColumns = {@JoinColumn (name="USER_ID")}, 
            inverseJoinColumns = {@JoinColumn (name="ROLE_ID")})
    @LazyCollection (LazyCollectionOption.FALSE)
    private List<Role> roles;
}

/* Mapping for ROLE table */
@Entity
@Table (name="ROLE")
public class Role {
    @Id
    @Column (name="ID")
    private int id;

}
如何在hibernate中使用HibernateTemplate执行此操作?

非常简单:

select role from User user inner join user.roles role where user.id = :userId
甚至更简单,没有任何疑问:

User user = (User) session.get(User.class, userId);
return user.getRoles();
编辑:要知道给定角色是否被至少一个用户引用,可以使用以下查询,这与SQL查询非常相似:

select distinct role from User user 
inner join user.roles role 
where role.id = :roleId

谢谢你的快速回复,但是这些答案会给我一个基于用户的角色集合。如果你不明白的话,我会编辑这篇文章并添加一些信息。谢谢
select distinct role from User user 
inner join user.roles role 
where role.id = :roleId