您的位置:首页 > 其它

关于Hibernate中如果一个实体类是 Set,怎么去查询数据

2017-11-09 18:46 239 查看
今天在工作中碰到了一个问题

一个 实体类 User 关联了一个 权限表 Role

User 表 是这样的

public class User
private String userName; // 用户名
private String nickName; // 昵称
private String trueName; // 真实姓名
@ManyToMany(targetEntity = Role.class, fetch = FetchType.LAZY)
@JoinTable(name = Globals.DEFAULT_TABLE_SUFFIX + "user_role", joinColumns = {
@javax.persistence.JoinColumn(name = "user_id") }, inverseJoinColumns = {
@javax.persistence.JoinColumn(name = "role_id") })
private Set<Role> roles = new TreeSet();


public class Role
private String roleName;        // 角色名称
private String roleCode;        // 角色编码,根据该编码来识别角色


但是,我想查询的 某个权限,那些用户在使用,本来很简单的一个sql 语句可以解决的,但是使用了@JoinTable 导致了没有关联的实体类,去查询。

怎么解决了

"select u from User u join u.roles r where r.id="+roleId


(Set)和(List)都可以取集合中的元素,但用在where子句的条件是需要数据库支持子查询。

所以使用关联 查询,我们就可以查询出来了。

u.roles r 中的 r 意思就是 role 这个对象的别名,hibernate会翻译成两个表的内连接关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate 工作
相关文章推荐