一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有。查询教拥有书"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中元素做条件查询的更多相关文章

  1. SQL 中的多条件查询

    在应用程序开发中,多条件查询是个经常遇到的情况,最简单最麻烦的方法是把所有的可能情况都考虑到,但是无疑是繁琐的,而且很容易漏掉可能的情形,下面是SQL语句实现多条件查询的情况 select * fro ...

  2. Hibernate多对多关联映射的HQL中的in条件查询问题

    群里有朋友求解一个问题,高分求一条HQL多对多查询语句 . 问题描述见 http://topic.csdn.net/u/20090621/16/4eac6fe0-bf3e-422e-a697-f758 ...

  3. java web中的多条件查询

    转自:http://blog.csdn.net/xulu_258/article/details/46623317 所谓多条件查询即为用户输入想要查询的条件,然后根据用户输入的条件进行查询. 当用户有 ...

  4. java中mongo的条件查询

    @Override public Page<ProductInfo> findAll(Pageable pageable, ProductInfo productInfo) { //创建一 ...

  5. php中的多条件查询

    首先是查询所有,步骤不详述,连接数据库,查询表中的所有信息,foreach循环以表格的形式打印出来 然后就是form表单中提交查询的数据,这里以post方式提交到本页面,所以要判断post中是否有值, ...

  6. mysql拆分字符串做条件查询

    mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个dept_id该怎么查 ...

  7. Mybatis中的复合条件查询

    1.Map中根据字段名存儲: 定义接口:List<Student> selectByCondition1(Map<String,Object> map); 映射文件: < ...

  8. laravel读取memcached缓存并做条件查询

    public function onlineplayersource() { $res = $_POST['aoData']; $sEcho = 0; $iDisplayStart = 0; // 起 ...

  9. ThinkPHP中 按条件查询后列表显示

    最近在项目中遇到了需要根据下拉框的条件筛选出符合条件的数据,然后进行列表显示的问题. 在ThinkPHP中进行列表显示的传统过程:通过在后台控制器中查询出数据,然后通过$this->assign ...

随机推荐

  1. 深入JS系列学习2

    今天看和学习了深入理解JS系列2.3.4.5,更加明白了函数声明和表达式的区别,自执行函数和立即执行函数,js强大的原型链继承,js中对象的想过写法,modules模式等. 在ECMAScript中, ...

  2. SQL Server中的STUFF函数的使用

    STUFF ( character_expression , start , length ,character_expression ) 作用 删除指定长度的字符,并在指定的起点处插入另一组字符. ...

  3. sqlserver 时间格式化

    SELECT CONVERT(varchar(), GETDATE(), ) :12AM SELECT CONVERT(varchar(), GETDATE(), ) // SELECT CONVER ...

  4. 浅谈SQL Server中的快照

    原文地址:http://www.cnblogs.com/CareySon/archive/2012/03/30/2424880.html 简介 数据库快照,正如其名称所示那样,是数据库在某一时间点的视 ...

  5. [Design Pattern] Flywight Pattern 简单案例

    Flywight Pattern, 即享元模式,用于减少对象的创建,降低内存的占用,属于结构类的设计模式.根据名字,我也将其会理解为 轻量模式. 下面是享元模式的一个简单案例. 享元模式,主要是重用已 ...

  6. Shopilex - 开源免费网店系统

    Shopilex - 开源免费网店系统 Shopilex是一套基于GPL开源协议的,MVC架构的开源电子商务网店系统,是目前中文领域里真正开源免费的网店系统.

  7. Java中直接输出一个类的对象

    例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...

  8. java在windows下加载dll

    java在类中加载动态链接库文件. 类文件中: static { System.loadLibrary("dll文件"); } dll文件在工程的包路径下.例如:pro/bin/h ...

  9. 032数值的整数次方(keep it up)

    剑指offer中题目:http://ac.jobdu.com/problem.php? pid=1514 题目描写叙述: 给定一个double类型的浮点数base和int类型的整数exponent. ...

  10. C++中的构造函数和析构函数

    构造函数: 在类实例化对象时自动执行,对类中的数据进行初始化.构造函数可以从载,可以有多个,但是只能有一个缺省构造函数. 析构函数: 在撤销对象占用的内存之前,进行一些操作的函数.析构函数不能被重载, ...