HQL的左连接_左连接与右连接的区别

HQL的左连接_左连接与右连接的区别最近做一个查询实现把一个表的记录全部显示出来并且显示关联的另外一个表的记录,这当然谁都知道要用到外连接查询,然而过程并不愉快。在Hibernate的映射文件中配置好关联关系之后,查询的时候可以直接使用比如selectnewmap(student.studentIDasstudentID,student.studentAccountasstudentAccount,student.stu

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近做一个查询实现把一个表的记录全部显示出来并且显示关联的另外一个表的记录,这当然谁都知道要用到外连接查询,然而过程并不愉快。

在Hibernate的映射文件中配置好关联关系之后,查询的时候可以直接使用比如

select new map(student.studentID as studentID, student.studentAccount as studentAccount,student.studentName as studentName,student.skill.skill as skill) from Student student where student.studentID!=0 and ........

,但是默认使用的内连接,就是说外键必须匹配的记录才能查出来,实现不了要求。
当我决定用左连接查询之后,做了很多尝试,但是因为对HQL不够熟悉,都没有达到要求。比如这样的

select new map(student.studentID as studentID,student.studentAccount as studentAccount,student.studentName as studentName,student.canInterview as canInterview,student.mail as mail,skill.skill as skill,skill.description as description) from Student student left join student.skill skill with student.studentID!=0 and ........
错误,报错:with-clause expressions did not reference from-clause element to which the with-clause
原因因给是是在with语句里面没有用到skill

改成是这样?

select new map(student.studentID as studentID,student.studentAccount as studentAccount,student.studentName as studentName,student.canInterview as canInterview,student.mail as mail,skill.skill as skill,skill.description as description) from Student student left join student.skill skill where student.skill.skillID = skill.skillID and ....... 虽然有了skill,但是,报错:with-clause referenced two different from-clause elements

幸好没有崩溃,想起来看一下书。其实怪就怪在没想起来用到join…where,where对字段的限制并没有那么严格,但是因为在Student关联的是Skill实体,又不能直接用where而放弃join,所以,正确的语句:

select new map(student.studentID as studentID,student.studentAccount as studentAccount,student.studentName as studentName,student.canInterview as canInterview,student.mail as mail,skill.skill as skill,skill.description as description) from Student student left join student.skill skill where student.studentID!=0 and ......

注意,上面的student.studentID!=0其实没有起到条件筛选作用,而是为了后面接上and条件不会出错。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193407.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 用c#实现简单的登录和注册功能

    用c#实现简单的登录和注册功能这两天c#大作业要求做一个简单的通讯录系统,我就先做了登录和注册的功能,在网上看了一些代码,自己再做,终于做出来了。做的不是很美观,但是可以简单实现。首先用sqlserver建表。我建了一个名为user_info的表,添加username和passdword两个字段。创建登录页面,改了一些控件的名称,效果如下图:登录界面代码如下:privatevoidbtn_Login…

  • 体验云计算的成果—-亚马逊免费云计算服务

    体验云计算的成果—-亚马逊免费云计算服务

  • Java之Java开发工具

    Java之Java开发工具

  • 云数据库专属集群MyBase_QQ群关系数据库

    云数据库专属集群MyBase_QQ群关系数据库HQY腾讯7000WQQ群关系数据库泄漏共24.52G。QQ24.5gb腾讯QQ群关系数据库,不包含密码。只包含个人名字(群备注名字等信息)。如果想在线查询更多qq群数据信息可以查看:一、下载完24.5gQQ数据库后,解压文件下载后不要把文件改名,打开7z,点击其中一个文件,选择合并文件,合并之后再解压,解压出来应该有22个mdf文件,实际大小应该是91.6G还不到92G。想要数据库下载地址…

  • 我眼中的2011年互联网大事记「建议收藏」

    我眼中的2011年互联网大事记「建议收藏」  2011年这一年中国的互联网发生了很多事,有人缔造了新的商业模式,有人靠一个点子拿到了百万美金,有人如愿找到了一份满意的工作,有人通过网站挣到人生第一笔财富。  每个人眼中都有着属于自己的互联网大事记,本文将讲诉:2011年,我眼中的互联网大事记。  一、互联网聚会越来越多  今年关乎互联网站长聚会越来越多,不仅仅是站长大会,关于互联网创业的聚会越来越多,而且有越来越多的团…

  • 用IDEA一年了,终于敢说自己会用了(IDEA配置和使用)[通俗易懂]

    作为Java老兵,我也是用了很多年的eclipse,为了与时俱进,于是切换到了IDEA。刚开始的时候感觉很不适应,感觉这玩意儿不如eclipse好用,影响工作效率,于是又换回eclipse。但是很多

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号