关于hql中集合属性的条件查询语句怎么写

有两个实体student 与 exam,它们是多对多的关系,student中有 List examlist;
前台选择exam的id(考试编号)选项(可多选),如何查询参加过所选考试的学生?hql语句该怎么写呢,使用多个占位符写死不可取,因为不知道前台会选择几个考试选项。
有两个entity,要实现查询参加前台已选择考试的编号(可多选)的学生
1.Student
2.Exam
3.StuExam中间实体(Exam 与 Student)

class Student{
private int id;
........
@OneToMany(mappedBy="student",targetEntity="StuExam")
private List stuExamList = new ArrayList();

}

class Exam{

private int id;
........

@OneToMany(mappedBy="exam",targetEntity="StuExam")
private List stuExamList = new ArrayList();
}

class stuExam{

private int id;

@ManyToOne
@JoinColumn(name="examId)
private Exam exam;

@ManyToOne
@JoinColumn(name="studentId")
private Student student;

}

1

8个回答

你首先新建一个集合 ,这个集合 把你的多选的ID 全部放进来 这一步不会再详细问我
然后建立sql 语句 循环数组长度,执行就好 如果你想要一个几何中
不限麻烦 就联合查询 ,想简单一点就list追加

0

例如 一个学生表Student 一个教师表teacher学生表属性 id ; name ; Setteachers;教师表 属性 id ; name ; Setstudents;已有学生实例 student1,要查询返回 教这个学生的教师集合; 请问该如何写HQL 语句; WHERE 后面语句 如何写? public ListfindByStudentr(Student student) { return getSession().createQuery( "FROM Teacher t WHERE XXXXXXXXXX") .setParameter(0, student) .list(); }

0

代码如下 :记得采纳谢谢!
public List ListfindByStudentr(Student student) {
Student stu= (Student)session.createQuery("FROM Student stu WHERE id = ?") .setParameter(0, student.id); ).uniqueResult();
return stu.getTeachers;
}

0

以上两个答案不知道哪里来的,我哪里说有Teacher?

0

可以写一个方法将多选的考试编号拼接起来,然后把方法作为条件放到hql语句里面进行查询

0

写一个方法将多选的考试编号拼接起来

0

老哥 我能问一下你的表结构么
我感觉你没用关系表 直接映射多对多么
解决你第二个问题,判断你传回来的数值是否为空
比如这样写吧
StringBuffer hql = new StringBuffer();
hql.append(select * from xx where1=1)
if(
student.xx==null&&student.xx=""
)
hql.append(and ....)

0
qq_32686815
Macmanboy 回复weixin_42267525: 你好,我已经更新了问题,求教。
大约一年之前 回复
weixin_42267525
有梦想的老咸鱼 你这个项目蛮怪的 ,涉及到复杂查询 ,还是用这个框架 emmmm 给你们点个赞
大约一年之前 回复
weixin_42267525
有梦想的老咸鱼 没看见有个多选不好意思给你补上 那个集合接受你穿过来的的考试编号 比如说有个三个把,for list。length 循环三条hql语句 执行三遍 完事
大约一年之前 回复
weixin_42267525
有梦想的老咸鱼 忘了说了你如果直接映射多对多 肯定要报错的啊 N+1 你看看吧 如果能发过来就更好了
大约一年之前 回复

我的问题没有说明白,有两个entity,要实现查询参加前台已选择考试的编号(可多选)的学生
1.Student
2.Exam
3.StuExam中间实体(Exam 与 Student)

class Student{
private int id;
........
@OneToMany(mappedBy="student",targetEntity="StuExam")
private List stuExamList = new ArrayList();

}

class Exam{

private int id;
........

@OneToMany(mappedBy="exam",targetEntity="StuExam")
private List stuExamList = new ArrayList();
}

class stuExam{

private int id;

@ManyToOne
@JoinColumn(name="examId)
private Exam exam;

@ManyToOne
@JoinColumn(name="studentId")
private Student student;

}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Hibernate的HQL简单查询语句
前言       不管数据库用的是什么类型,对于查询语句来说,我们总是习惯了SQL语句。它之所以能够屹立不倒,一方面已成为了习惯,一方面确实功能强大。Hibernate相对于其他ORM实现来说,数据查询是它独特的亮点。它所提供的HQL,类似于SQL语句,但是却比SQL语句灵活。它跟SQL语句有很多相似的地方,是因为这样的话更容易被接受。   HQL查询   简单属性查询      ...
hibernate Criteria查询多对多(Set集合)条件筛选
查询用户userStatus等于1且他的角色Level等于3的用户   PO   public class UserPO implements java.io.Serializable { /** 用户唯一标识ID */ private String id; /** 状态(在用1停用0) */ private String userStatus; private S...
Hibernate的八大类HQL查询集合
Hibernate的八大类HQL查询集合: 一:属性查询(SimplePropertyQuery) 1,单一属性查询 *返回结果集属性列表,元素类型和实体类中相应的属性一致 2, 多个属性查询, * 返回集合中的元素是object数组, * 其中数组元素的类型和对应属性在实体类中的类型一致 代码: for(Iterator iterator=list.iter...
hql查询 (条件查询)
先看一个例子   如果看不懂   ‘看不懂where是怎么回事写程序  其实挺简单  就是  想办法  把需求转换成sql语句   得到结果就行 写代码不难条件查询  ?号是  占位符  需要往里面设置值setparameter(,)里面有两个参数   代表的含义要明白 模糊查询...
Hibernate框架HQL语句动态条件查询
HQL语句动态条件查询可以根据条件是否存在自动封装hql语句的查询条件,在这里使用map集合来实现,也可以通过创建实体条件类来创建,但是创建类太多,如果使用该查询频率较高可以使用这种方法,实体类方法与map方法类似 其中自定义的条件名要与map键值对的key值相同,每一个and前要预留空格,否则会报org.hibernate.hql.ast.QuerySyntaxException异常 publi...
给Hibernate多对多(一对多)集合属性的条件
public class ZgtcAirportIndexColunm extends BaseEntity implements java.io.Serializable { private Set roles = new HashSet(0); public Set getRoles() { return roles; } public void setRoles(Set...
hql 如何实现多个条件查询自由动态拼接
最近在做多个查询需要自由拼接的时候遇到一些问题,由于项目是ssh,herbinate这种处理在网上比较少,所以记录一下。 下面的select后面为我的model类,where后面则是一下查询条件是否为的判断。 StringBuffer sql = new StringBuffer("select new com.empl.mgr.model.A_User (stuId, stuSchool,
hql语句:一对多查询
一对多的查询又包含以下情况: 1、等值连接 2、内连接 3、迫切内连接 4、左外连接 5、迫切左外连接1、等值连接:一对多查询的时候,由于使用的hql语句,是根据类来查询的,所以hql语句这样表示: /** * 等值连接 */ public void Connect_equal(){ Session session=sessionFacto
Hive入门(四):HQL查询语句(一)
select 查询显示表名 查询所有列 查询指定列并指定列别名 查询集合数据类型列 查询Array元素 查询Map元素 查询Struct元素 查询计算列 算数运算符 运算函数 数学函数 聚合函数 表生成函数 Limit函数 嵌套select 语句 case语句 where语句 浮点数比较问题 模糊匹配 like rlike group by select 首先可...
HQL语句集合大全
HQL 查询(简单多表查询 不复杂的查询) 查询所有对象@Test public void fun() { String hql = "from User "; Session session = HibernateUtils.getSession(); Transaction transaction = session.beginTrans
Sql或者hql 查询时 需要多条件时可以使用嵌套查询
例如:from navigation n where n.class_2_number in(select n.id from n where n.visible='1')
HQL查询-分页-条件-连接-过滤使用
HQL(Hibernate Query Language)是hibernate自带的查询语言,进行了面向对象的分装,今天就来学习一下, 新建一个java项目,结构如下: jar包和hibernate官网使用,参见《Hibernate环境搭建和配置》 实体类Book代码: package com.myeclipse.pojo; import java.uti
HQL内连接语句实测
通过在服务器端的 HQL 内连接语句关联存在一对一关系的两个对象
Annotation注解归总&ID生成策略&联合主键及hql中的条件查询写法
Annotation中ID生成策略: 1. 手动指定;没说的之前写过,xml和属性都使用过;@Id 2.  使用 Generator 生成器; Generator 有很多值:常用的有native , identity, sequence,uuid(id类型 String) ; 使用Generarot帮我们自动生成ID: @GeneratedValue 注视在 @Id下: @Id @...
hibernate中一对多关系hql条件查询
当hibernate中难免遇到一对多的情况,并且需要对多方添加条件,使用sql查询会简单很多,hql的语法如下 Teacher对应下有多个Student Teacher中Set students; select t from Teacher t,Student s where t.tNo ='001' and s.sName like '张%' and s in elements(t
hibernate not in 查询条件为一个集合【原创】
@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true)public List<OpUsrrole> OpUsrroleExList(List<OpUsrrole> grprole) {   ArrayList<Long> ids = new ArrayList<Long&g...
Hibernate5入门(五)查询方式之HQL
学习笔记,为了加强记忆和深入理解在此记录备忘。如有错误和理解不当之处,还望指正。万分感谢! 另外,实例和内容有些是参照网络其他博文,如有侵权可联系删掉。 参考博客 地址:https://www.cnblogs.com/whgk/p/6159336.html 目录 一、导航对象图查询 二、OID查询 三、本地sql查询 四、hql查询 4.1 查询全部员工 4.2 查询员工编号是1...
HQL多表查询 ---- Hibernate之查询语句
叙:上一章节记录的是HQL的单表查询,本章节就HQL的多表查询方式进行记录; HQL查询数据 本章节主要学习的是HQL查询方式的表查询; 几种查询方式 1. 内连查询 查询语句比较奇怪,from Customer c inner join c.linkMens,查询Customer类所映射的表和Customer类中linkMens属性所代表的实体类的映射的数据库表;这句话很拗...
HQL 多对多查询写法
List infolist = new ArrayList(); infolist = getHibernateTemplate().find("select i FROM Information i join i.channels c where c.id=? ",delChannel.getId()); for(int i=0;i Information info = infolist.
Hibernate如何使用HQL语句实现数据分页查询
实现数据分页查询 使用Query接口的 setFirstResult (int firstResult) 方法 和 setMaxResult (int maxResult) 方法实现 setFirstResult (int firstResult) 方法 :设置返回的第一条记录的位置(位置下标从0开始) setMaxResult (int maxResult) 方法:设置最大返回记录条...
hql语句为变量赋值的两种方式
hibernate的hql语句给未知量赋值有两种方式 同时,赋值的位置也有两个 1、未知量赋值方式     使用“?”来表示未知量,然后是第二步为“?”号赋值     使用“:起个名字”   表示未知量,然后是对这个“起个名字赋值” 2、赋值量赋值的位置     直接在createQuery(hql语句)后面,当只有一个未知量时可以使用     单独的在Query的setString
HQL语句的模糊查询
Hibernate框架中的HQL查询语句非常类似于标准SQL查询语句。因此模糊查询语句也和SQL语句基本一样。用法:"FROM 映射实体类名 WHERE 搜索字段 LIKE '%"+搜索参数+"%'";
Hibernate的Hql语句使用in关键字
Hibernate的Hql语句使用in关键字
HQL 简单的几种带条件查询方法
条件查询 * 可以采用拼字符串的方式传递参数 * 可以采用 ?来传递参数(索引从0开始) * 可以采用 :参数名 来传递参数 * 如果传递多个参数,可以采用setParamterList方法 * 在hql中可以使用数据库的函数,如:date_format 第一种:可以拼字符串 List students = session.createQuery("selec...
使用hql修改语句查询
package com.bdqn.test; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import javax.xml.crypto.Data; ...
使用HQL语句方式实现多表多条件组合模糊查询
最近在做struts2+hibernate项目整合,其中有一个两表多条件组合模糊查询功能: 将页面查询条件封装为对象,传至后台处理: /*查询实例类/ package com.newer.bean; import java.util.Date;/** * 模糊查询对象实体类 * * @author Siglam Lee * */ public class SearchM
通过id集合查询sql(hibernate)
1、通过id集合获取对象 String hql = "from TSysMessageToDo where mtdId in(:mtdId)"; List list = getSession().createQuery(hql) .setParameterList("mtdId", mtdId).list(); return list; setParamet...
Hibernate hql语句按时间段查询
Hibernate hql语句按时间段查询
技术总结记录:hibernate使用hql查询条件为空
使用hibernate框架,hql语言,mysql数据库,在做查询的时候遇到一个问题,发现查询的条件为空,但是查询总是报错。原因是当条件为空时,条件上应该用 is not,而不是这样 Query query_getMoney = session1.createQuery("select sum(" + sqlField_Summation + ") from Lshsje where spNo...
hql语句查询返回List<Map>
//查询其中几个字段,添加new map(),注意map里的m是小写的。也不需要导入包,这样通过query.list()出来的list里存放的不再是默认的Object数组了,而是map集合了    String hql = " select new map(name,passwd) from Users";    Query query = session.createQuery(hql);  
使用hibernate多对多关联关系的HQL查询语句
Daoimpl层 以角色和权限表为例 常见inner join [code="java"] public List getRoleFunction(int rid) { return this.getHibernateTemplate().find("select f from Function as f inner join f.roles as r where r.roleid="+...
在HQL select查询语句中自定义查询结果返回的数据类型
1.select子句用于选择制定的属性或者直接选择某个尸体,当然select选择的属性必须是from后持久化类包含的属性。例如: select 0.name from Owner o 2.select可以选择任意属性,即不仅可以选择持久化类的直接属性,还可以选择组建属性包含的属性,例如: select o.name.set from Owner o     在通常情况下,使用Sele
hibernate中的hql语句加select字段与不加的区别
hibernate框架中有属于自己的hql查询语言,hql语句与sql语句的区别是: hql语句中from后面的不代表表名(不区分大小写),而代表类名(区分大小写)。 下面通过一个例子说明加select字段与不加的区别: 先在数据库中创建一个表,这里创建的是school表,其中有两个字段,sid和sname,创建表的语句如下: create table school ( sid
Hibetnate中hql语句使用in关键字,Sql语句中同时使用or和and
异常: Parameter value [未提交 , 审核不通过] was not matching type [learnext.entity org.hibernate.hql.ast.QuerySyntaxException: cannot define positional parameter after any named parameters have been defined...
HQL多个查询条件时候给参数赋值
在项目中用到了hql 语句时里面有多个查询条件。 每个查询条件都是可选的。   下面是两种方式,在这里记录一下。   一种是直接在语句里面传参数:   public List<Userinfo> findAll(String userAccount, String userName) { List<Userinfo> user = new ArrayLi...
Hibernate使用hql和sql查询
一般情况下,程序里写了实体类(TestEntity.java)以及实体类和hibernate的映射文件(TestEntity.hbm.xml),那么在写操作数据库语句时,会使用hql,直接操作实体类,很方便且不容易出错,写法: public class TestDao extends FoHibernateDaoSupport implements ITestDao{ public TestE
hql中关于一对多,根据数组里面某个对象的某个属性查询的方法总结。
今天在工作中遇到了一个棘手的问题, 问题描述如下: A类中需要关联List,即一对多关系,现在我需要根据B类中的一个属性,查询A类。 解决方法如下: String hql = "select distinct a from A类 a left join a.List b where b.XXX = ?"; 注:一定要用distinct去重,否则会出现重复数据。
关于Hibernate中如果一个实体类是 Set,怎么去查询数据
今天在工作中碰到了一个问题 一个 实体类 User 关联了一个 权限表 RoleUser 表 是这样的public class User private String userName; // 用户名 private String nickName; // 昵称 private String trueName; // 真实姓名 @ManyToMany(target
ssh:hql动态查询+多条件自由拼接+模糊查询
@Override public List<Book> getByInfo(String name, String author, String publisher) { Session session=sessionFactory.getCurrentSession(); StringBuffer hql=...
【Hibernate】Hql语句in中带参数的写法
在页面中通过自定义标签查询一个列表的多种状态的数据,如下,查状态为1和3的数据: [@s_icloud_resource_list count='8' orderBy='1' type='4' state='1,3'] [#list tag_list as a] [/#list] 此时在后台Hql语句中拼写in 语句时,如下传入数组的方式。 if (state !=null) { ...