用Set中元素做条件查询
一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有。查询教拥有书"a"的学生的老师:
class teacher{
String id;
String name;
Set students;
}
class student{
String id;
String name;
Set teachers;
Set books;
}
class book{
String id;
String name;
Set students;
}
利用连表的方法查询:
SELECT t FROM teacher t join t.students s join s.books b where b.name = 'a'
利用子查询(需要数据库支持子查询,mysql就不行)
SELECT t FROM Teacher t,Student s,Book b where s.id in elements(t.students) and b.id in elements(s.books)
另外t.students s中s并不是集合的意思,而是t的students对象的表别名,join t.students s这个hql,hibernate会翻译成两个表的内连接关系
另一篇文章
在Hibernate中类型为Set、List的实体属性也是可以连接查询的,例如User里面有一个Set knowledge属性要获取User中Knowledge的isShared的属性为true的User并且在返回的User中的knowledges中包含isShared为true的Knowledge对象的时候,就要通Set的过虑查询(左连接查询),在hibernate3.2.3以后的写法如下 www.lefeng123.com
select distinct u from User u left join fetch u.knowledges k where k.isShare=true.
这样就只会获取knowledge的isShared为true的User,并且User里面的knowleges中包含knowledge的isShared为true的Knowlege对象。
需要注意的是:关键字distinct和fetch.要实现上面的数据过虑就得要这两个关键字。第一个关键字是独立的意思,第二个关键字是以一条sql语句执行。如果少了fetch这个关键字,则达不到目的。返回的结果是一个User包含isShared为true和false的knowledge集合托福答案 www.yztrans.com
个人使用
select js from edu.dzu.ksap.entity.JsBean js inner join js.xyBeans xy where xy.xydm=:xydm order by id
JsBean为教室信息,XyBean为学院信息。学院--可使用教室的关系,为,但Xy为前期开发的模块,教室管理为新添加功能,Xy
Bean不便于修改,当同学Xybean主键查询教室的信息时,可通过上面的HQL语句执行查询。需注意,由于为连表,需要select js,否则查找的对象不能转化为JsBean对象,即抛出java.lang.ClassCastException.
用Set中元素做条件查询的更多相关文章
- SQL 中的多条件查询
在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...
- Hibernate多对多关联映射的HQL中的in条件查询问题
群里有朋友求解一个问题,高分求一条HQL多对多查询语句 . 问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f758 ...
- java web中的多条件查询
转自:http://blog.csdn.net/xulu_258/article/details/46623317 所谓多条件查询即为用户输入想要查询的条件,然后根据用户输入的条件进行查询. 当用户有 ...
- java中mongo的条件查询
@Override public Page<ProductInfo> findAll(Pageable pageable, ProductInfo productInfo) { //创建一 ...
- php中的多条件查询
首先是查询所有,步骤不详述,连接数据库,查询表中的所有信息,foreach循环以表格的形式打印出来 然后就是form表单中提交查询的数据,这里以post方式提交到本页面,所以要判断post中是否有值, ...
- mysql拆分字符串做条件查询
mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个dept_id该怎么查 ...
- Mybatis中的复合条件查询
1.Map中根据字段名存儲: 定义接口:List<Student> selectByCondition1(Map<String,Object> map); 映射文件: < ...
- laravel读取memcached缓存并做条件查询
public function onlineplayersource() { $res = $_POST['aoData']; $sEcho = 0; $iDisplayStart = 0; // 起 ...
- ThinkPHP中 按条件查询后列表显示
最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign ...
随机推荐
- perl 正则详解
用/s 来匹配任意字符 默认情况下,点号(.)无法匹配换行符,这对大多数单行匹配的情况是合适的. . 圆点用于匹配除换行符外的任何单个字符 + 意味着一个或多个相同的字符 .+ 匹配任意单个字符至少一 ...
- Radar Installation 贪心
Language: Default Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42 ...
- 关于Cookie和Session【转载】
当你第一次访问一个网站的时候,网站服务器会在响应头内加上Set-Cookie:PHPSESSID=nj1tvkclp3jh83olcn3191sjq3(php服务器),或Set-Cookie JSES ...
- 关于FIN_WAIT1
前些天,一堆人在 TCPCopy 社区里闲扯蛋,有人提了一个问题:FIN_WAIT1 能持续多久?引发了一场讨论,期间我得到斌哥和多位朋友的点化,受益良多. 让我们热热身,通过一张旧图来回忆一下 TC ...
- java vm内存设置
1.普通java应用程序,使用java命令运行, java -Xms1024m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar 2. ...
- (五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAxOTcxNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- 在 iPad和 iPhone的浏览器上查看网页源代码
今天使用iPad 处理OA上的问题,有个窗口不能正常工作,想查看一下源码,发现iPad中的 Safari和chrome 没有内置查看源码功能.查了几个资料,遇到的又是没抄全的,下面是safari的设置 ...
- C++ TinyXml操作(含源码下载)
前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手.这个解析库的模型通过解析X ...
- 单页面应用SPA架构
个人认为单页面应用的优势相当明显: 前后端职责分离,架构清晰:前端进行交互逻辑,后端负责数据处理. 前后端单独开发.单独测试. 良好的交互体验,前端进行的是局部渲染.避免了不必要的跳转和重复渲染. 当 ...
- C#面向对象的一些笔记
抽象 抽象类通常表示一个抽象的概念,提供一个继承的出发点.当设计抽下类时候,尽可能的拥有更多的相同代码,更少的数据. 抽象类.方法用abstract关键字修饰: 抽象成员不能是private. 抽象类 ...