关于Hibernate中如果一个实体类是 Set,怎么去查询数据
2017-11-09 18:46
239 查看
今天在工作中碰到了一个问题
一个 实体类 User 关联了一个 权限表 Role
User 表 是这样的
但是,我想查询的 某个权限,那些用户在使用,本来很简单的一个sql 语句可以解决的,但是使用了@JoinTable 导致了没有关联的实体类,去查询。
怎么解决了
(Set)和(List)都可以取集合中的元素,但用在where子句的条件是需要数据库支持子查询。
所以使用关联 查询,我们就可以查询出来了。
u.roles r 中的 r 意思就是 role 这个对象的别名,hibernate会翻译成两个表的内连接关系
一个 实体类 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的查询数据,不要在set值,比如:密码解密,否则会重新更新到数据库中
- 只是一个关于表白的小程序而已,如果你不知道怎么拒绝我,那就来掐死我吧。
- 关于Hibernate映射视图后数据查询的方法
- Hibernate查询数据映射enum的一个问题
- 【转】一个域名是用哪里的DNS来解析的,电脑怎么知道找哪一个DNS呢? 我注册域名的时候会在服务商那里配置DNS解析,一般需要24小时后才能访问,我想知道,解析后的这个数据是不是会同步到世界上所有的DNS服务器呢!如果不是,当我访问我的这个域名的时候,电脑怎么知道去找到我注册的这一家的DNS服务器呢,谁告诉他的呢?
- hibernate查询数据表char类型字段只返回一个字符
- hibernate查询数据表char类型字段只返回一个字符
- 关于 hibernate 逻辑删除 默认查询过滤条件问题(java set 条件)
- 在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?(转)
- 关于hibernate 更新后立即查询数据,取到的是更新之前的数据的问题
- 关于hibernate使用SQL查询,结果集无法映射到实体类上
- 如果java中一个方法不知道要传递多少参数也不知道传递过来的是什么类型的数据你会怎么做?
- 关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
- 做mvc+EF的项目中如果你用的是code first,当更改某实体类时,你会发现数据库中的数据没了,该怎么做?
- hibernate 联表查询 ,用一个vo来装联表查询字段的数据
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- 关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
- hibernate查询某一个表所有数据
- 关于udp socket recvfrom函数的一个易错问题: 如果应用程序指定的接收长度不够怎么办?
- Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)