hql条件查询语句

hql关联查询语句怎么写

1.hibernate如何做关联查询呢

很多人认为hibernate一旦涉及到多张表查询就很不方便,只能通过原生sql解决,其实不然,hql语句其实已经比较强大了,基本涵盖了sql的60%的功能。我认为用原生sql的场景应该为以下几点情况:

1. 非常复杂sql(嵌套、临时表、混合语句【update包含select嵌套】)

2. 某数据库(如oracle)特性函数

3. 特殊业务sql,即查询出的结果是某种特殊业务含义,并不是po实体类里的字段。例如:select col_1 as business1, col_2 as business2 from table;(business1并不是table的字段)

除以上特殊需求外,我建议能用hq就用hql,hql最大的优点,除了能自动映射成po实体类,另一个就是跨数据库的通用性,采用hql语句可以轻松将数据库由mysql改为oracle。

hql的基础我就不再叙述了,今天我为大家主要介绍多表之间的关联查询。

1. po之间含有关联关系

public class Student {

private Clazz clazz;

get()。

set()。

}

from Student t inner join t.clazz r where t.sex = '男' and r.name = '三班'

这个语句默认情况下,是懒加载的,如果想一并抓取,则语句为:

from Student t inner join fetch t.clazz r where t.sex = '男' and r.name = '三班'

hql同样支持left join和right join等关联查询

2. po之间没有关联关系

public class Student {

private String clazzId;

get()。

set()。

}

select t from Studnent t, Clazz r where t.clazzId = r.id and t.sex = '男' and r.name = '三班'

3. 查询部分字段

另外有时我们只需要查询po对象里的部分字段,那么怎么查呢?

select new Student(name, sex) from Student

但需要注意的是,Student实体类中必须要有参数为name,sex的构造函数。

4. 统计函数

支持count()、min()、max()、sum()、avg()等

select avg(s.age) from Student as s

5. 去除重复行

select distinct s.age from Student as s

6. 综合用法

举一个典型的例子:分页。用hibernate分页,现在大多数人还是采用两步去做,第一步统计行数,第二步分页查询(目的是计算出总页数),如果想一步完成,多数人还是用sql了,其实hql也能做到。

select new Student(t.name, t.sex, count(t)) from Sudent t

在Student实体类中只要有参数为name, sex, rowCount的构造函数即可,rowCount也可以不是数据库里的字段

通过以上可以看出,某一技术我们有时觉得不方便,只是我们还不够了解它,需要我们更多的仔细去探索和挖掘。

2.怎么用HQL语句写级联查询啊

FROM Channel c,Module m,ChannelModule cm

where c.channelId=cm.channelId and m.moduleId=cm.moduleId and c.channelId=:id

看能不能运行,我不有把握。而且Hibernate查出来了也没办法用对象来装东西,因为是三个对象里面的东西。

如果你上面的程序可以运行的话,哪可以用上面的sql来吧。

Hibernate也可以直接用sql来做的。

String sql = "select * from channel c,module m,channel_module cm

where c.channel_id=cm.channel_id and m.module_id=cm.module_id and c.channel_id="+id;

Query query = getSession().createSQLQuery(sql);

return query.list();

出来的结果是对象数组。

//Collectionmodules=null;

你这个定义就不对,因为你查询的都是module表的内容吗?不是吧

3.hibernate的关联查询怎么实现

hibernate的关联查询实现方法,比如有存在关联的表A和表B字段分别如下:

A:id,aName,aDesc

B:id,aId,bName,bDesc

希望查询的结果是:A.id,B.id,A.aName,B.bName,B.bDesc

1.按照如下步骤操作:

①创建A和B的hibernate映射,相互不用关联,对应持久化类为APojo和BPojo

②创建结果集的载体CPojo,CPojo只是简单的一个JavaBean不是持久化类,它的属性与查询结果相对应:

public class CPojo {

public long aId;

public long bId;

public String aName;

public String bName;

public String bDesc;

public CPojo(long aId, long bId, String aName, String bName, String bDesc) {

this.aId = aId;

this.bId = bId;

this.aName = aName;

this.bName = bName;

this.bDesc = bDesc;

}

}2.HQL关联查询语句写法:

Select new com.XXX.CPojo(a.id,b.id,a.aName,b.bName,b.bDesc) from A a,B b where a.id = b.aId优点:不需要建立复杂的持久化类,也不需要建立视图。结果集可以自由定制。

4.hibernate如何做关联查询呢

很多人认为hibernate一旦涉及到多张表查询就很不方便,只能通过原生sql解决,其实不然,hql语句其实已经比较强大了,基本涵盖了sql的60%的功能。

我认为用原生sql的场景应该为以下几点情况:1. 非常复杂sql(嵌套、临时表、混合语句【update包含select嵌套】)2. 某数据库(如oracle)特性函数3. 特殊业务sql,即查询出的结果是某种特殊业务含义,并不是po实体类里的字段。例如:select col_1 as business1, col_2 as business2 from table;(business1并不是table的字段)除以上特殊需求外,我建议能用hq就用hql,hql最大的优点,除了能自动映射成po实体类,另一个就是跨数据库的通用性,采用hql语句可以轻松将数据库由mysql改为oracle。

hql的基础我就不再叙述了,今天我为大家主要介绍多表之间的关联查询。1. po之间含有关联关系public class Student { 。

private Clazz clazz; get()。 set()。

} from Student t inner join t.clazz r where t.sex = '男' and r.name = '三班'这个语句默认情况下,是懒加载的,如果想一并抓取,则语句为:from Student t inner join fetch t.clazz r where t.sex = '男' and r.name = '三班'hql同样支持left join和right join等关联查询2. po之间没有关联关系public class Student { 。 private String clazzId; get()。

set()。 } select t from Studnent t, Clazz r where t.clazzId = r.id and t.sex = '男' and r.name = '三班'3. 查询部分字段另外有时我们只需要查询po对象里的部分字段,那么怎么查呢?select new Student(name, sex) from Student但需要注意的是,Student实体类中必须要有参数为name,sex的构造函数。

4. 统计函数支持count()、min()、max()、sum()、avg()等select avg(s.age) from Student as s5. 去除重复行select distinct s.age from Student as s6. 综合用法举一个典型的例子:分页。用hibernate分页,现在大多数人还是采用两步去做,第一步统计行数,第二步分页查询(目的是计算出总页数),如果想一步完成,多数人还是用sql了,其实hql也能做到。

select new Student(t.name, t.sex, count(t)) from Sudent t在Student实体类中只要有参数为name, sex, rowCount的构造函数即可,rowCount也可以不是数据库里的字段通过以上可以看出,某一技术我们有时觉得不方便,只是我们还不够了解它,需要我们更多的仔细去探索和挖掘。

5.java框架hibernate如何用hql语句查询多对多关联关系

Query query = session.createQuery(“select s.students from Teacher s where s.name= 'xxx' ”);

List list = query.list();

for (int i=0;i<list.size(); i++)

{

Student stu = (Student)list.get(i);

System.out.println(stu.getName());

}

6.怎么用HQL语句写级联查询啊

FROM Channel c,Module m,ChannelModule cmwhere c.channelId=cm.channelId and m.moduleId=cm.moduleId and c.channelId=:id 看能不能运行,我不有把握。

而且Hibernate查出来了也没办法用对象来装东西,因为是三个对象里面的东西。如果你上面的程序可以运行的话,哪可以用上面的sql来吧。

Hibernate也可以直接用sql来做的。String sql = "select * from channel c,module m,channel_module cmwhere c.channel_id=cm.channel_id and m.module_id=cm.module_id and c.channel_id="+id;Query query = getSession().createSQLQuery(sql);return query.list();出来的结果是对象数组。

//Collection modules=null;你这个定义就不对,因为你查询的都是module表的内容吗?不是吧。

hql关联查询语句怎么写

转载请注明出处育才学习网 » hql条件查询语句

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21433)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10450)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9526)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7769)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9609)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8011)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(8006)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(7007)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6539)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7122)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5400)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5833)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6518)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5428)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7592)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及