对象A 对应 表A,

对象B 对应 表B,

其中对象A中设置属性@ManyToOne 关联了对象B

但并不是所有A表数据都必然对应一个B表数据,即A表数据>=B表数据

现在想统计如下sql写法的数据:

string sql = “select a.*,b.name from a left join b on a.bid=b.id and b.flag=””1″””;

我现在需要转化成hql的写法,如下:

string hql = “from A left join A.B where b.flag=””1″””;

结果出来的数据是A表中关联了B表的数据,而A表中没关联B表的数据却出不来。

请教各位高手指点一二。谢谢。

自己顶一下。

10分

好像hibernate也是执行sql语句啊。

左连接使用join时,好像是with吧,你把with加上,然后把之前sql里面on的后半部分加上。试试看。

10分

HQL语句:”select a,b from  a left  join b where b.flag=””1″””;

试试

10分

from A left join A on A.bid=B.id where b.flag=””1″”

这些答案跟我写的效果是一样的,求高手解答

10分

你是说string sql = “select a.*,b.name from a left join b on a.bid=b.id and b.flag=””1″””;这样查询正确,而换为hql  string hql = “from A left join A.B where b.flag=””1″””;却不行?

如果是这样,两种方法:1.你可以使用原生查询执行sql  2.不要使用join,hibernate不支持left   join语法,给你个文章看看,当然建议使用92语法

http://awaitdeng.iteye.com/blog/735063http://awaitdeng.iteye.com/blog/735063

10分

补充一句,如果你特别想这么做,刚刚给你的那篇文章了也有具体的做法,好好珍藏吧!类似于迫切左外连接 :”from Customer c left join fetch c.orders o where c.name like “”t%”””+” o.name like “”t%”””

10分

用Hibernate不需要使用左联接。

直接使用 From A就可以了。需要调用B的时候 直接用 A。B就可以了

10分

引用 8 楼 holzkoepfer 的回复:

用Hibernate不需要使用左联接。

直接使用 From A就可以了。需要调用B的时候 直接用 A。B就可以了

恩,楼上说的有理…

10分

public List  findDeviceInfoByAreaId(Integer areaId,Integer deviceTypeId){

final StringBuffer sql=new StringBuffer();

sql.append(“select d.deviceinfoId,d.deviceinfoName,s.devicetypeName,w.warnNotifyDeviceId,l.levelName,w.warnNotifyType,l.levelId from  device_deviceinfo  as d   “);

sql.append(” left join sys_devicetype as s on d.deviceinfoTypeId=s.devicetype  left join device_coreinfo as c on d.deviceinforCoreId=c.coreinfoId  “);

sql.append(” left join sys_warnnotify as w on   d.deviceinfoId=w.warnNotifyDeviceId  left join sys_warnlevel  as l on  w.warnNotifyLevelId=l.levelId  “);

sql.append(” where 1=1 “);

if(areaId!=null&&areaId>0){

sql.append(” and  c.coreinfoAreaId=”+areaId+””);

}

if(deviceTypeId!=null&&deviceTypeId>0){

sql.append(” and  s.devicetype=”+deviceTypeId+””);

}

return  (List) getHibernateTemplate().execute(

new HibernateCallback() {

public List doInHibernate(final Session s)

throws HibernateException, SQLException {

Query query = s.createSQLQuery(sql.toString());//执行普通sql

List list = query.list();

return list ;

}

});

}

其实都差不多的

10分

最好有相应的测试代码和测试数据。 现在这样只写问题,别人即便是想帮你解决,他也得从头开始搞整个验证环境。

10分

string hql = “from A left outer join fetch A.B”; 这个是正解

结帖了,没找到解决办法,我还是用sql的方法去处理了。谢谢各位。

找到方法了,可能是我没有说清楚,我先说下我的两个表数据如下:

A表:

id ,  name ,  bid

1      名字1

2      名字2    1

3      名字3     2

B表:

id,  name,   flag

1       张三     true

2       李四     false

我之前用的hql写法如下:

string hql = “from A left join A.B where b.flag=””true”””;

这个时候返回的结果只有A表的id=2这条数据

我现在修改如下即可实现:

string hql = “from A left join A.B where (b.flag is null or b.flag=””true””)”;

这样就实现了我返回id=1和id=2这两条数据了。

再次谢谢各位。

java hql left join_求教hql的left join结合条件的写法相关推荐

  1. java hql 查询所有内容,HQL查询语言转载

    上一章介绍了Hibernate的关联映射,在11章的例子中接触到了Hibernate的添加.查询和删除的操作.这一章将介绍Hibernate.Hibernate查询语言为HQL(Hibernate Q ...

  2. hql mysql查询语句,HQL查询语言的使用介绍

    HQL查询依赖于Query类,每个Query实例对应一个查询对象,使用HQL查询按如下步骤进行: 1.获取Hibernate Session对象 2.编写HQL语句 3.以HQL语句作为参数,调用Se ...

  3. 什么事java中hql语句,hibernate中hql语句详解

    之前给大家讲了一下hibernate分页查询的内容,那么下面就要接着给大家对hibernate中hql语句方面的知识进行一下详细的讲解,一起来了解一下吧. 刚开始做项目的时候,项目当中的hql语句就是 ...

  4. 博为峰Java技术文章 ——JavaEE Hibernate HQL条件查询

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 条件查询在实际应用中比较广泛,通常使用条件查询过滤数据库返回的查询数据,因为一个表中的所有数据并不一定对用户 ...

  5. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。

    求教JAVA里面的错误我都已经看傻了.我思路是想创建个新对象(经理)并打印他的所有属性,外加上work一个干活的属性.自己看了半天改了半天都不行跪求高手给我改改并讲讲.abstractcl... 求教 ...

  6. java system.out.read_求教Java高手,关于输入流的read的问题,为什么while循环体里面的两个System.out.println没有打印出来?...

    importjava.io.*;publicclassFileOutputStreamTest{publicstaticvoidmain(String[]args)throwsIOException{ ...

  7. java 线程的join_多线程中join()

    这个鬼东西百度了好久没弄明白,大佬们代码一粘贴好了完事,借助官方api终于是理解了,当然如果有问题欢迎大家用键盘来羞辱我. 首先  join有什么用?   他是用来确定线程何时结束的 , Thread ...

  8. java凑数算法_求教一个有关“凑数”的算法

    "凑数算法"已知:string类型定长数组(如sName[5]={aa,bb,cc,dd,ee},各元素互不相等)unsigneddouble类型定长数组(如dP[5]={1.1, ...

  9. java语音输入_求教:javaWeb,添加语音输入的功能实现方法

    //语音识别 $rootScope.startRecognize = function() { var speech; var options = {}; //语音识别参数,用于控制语音引擎的各种技术 ...

  10. java 8009_tomcat大神求教:8080,8009,8443,8005都是什么端口,apache与tomcat通信是靠8009端口...

    展开全部 远程停服务抄端口32313133353236313431303231363533e59b9ee7ad9431333433633436百 其中度8080为知HTTP端口,8443为HTTPS端 ...

最新文章

  1. 通信基站电源维护培训PPT课件
  2. indigo egit
  3. iOS 调用地图导航
  4. python樱花代码_使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
  5. php语言cookie,如何创建一个简单的PHP cookie语言切换?
  6. 《TCP/IP详解》学习笔记(四):ICMP 协议、ping 和 Traceroute
  7. 三个不同线程顺序打印ABC十种写法,看到就是赚到!
  8. 企业发卡修复版源码(短链二维码)
  9. DNS服务器介绍(二)——主从复制和区域转发
  10. PyQt5笔记(04) -- 文本框的使用
  11. oracle 二进制与运算,Oracle怎么操作进行二进制的比对
  12. 个人开发者都可享受 无服务器计算颠覆收费
  13. nginx虚拟机无法访问解决
  14. 自动驾驶仿真:VTD自定义超声波雷达FOV
  15. http://bt.neu6.edu.cn/forum.php,分享一些教育网访问较快的站点~
  16. 机械工程师CAD2016
  17. TPP-Fe(3+)四苯基卟啉铁cas16456-81-8性质说明
  18. C++ friend和protected
  19. 英语和汉语的区别10大区别点
  20. LATEX之对文章排版的相关设置

热门文章

  1. PHP删除字符串最后一个字符的几种方法总结
  2. Linux软件包安装之yum的使用
  3. zendframework Form表单美化
  4. Lync部署学习笔记(一)
  5. Push failed: Failed with error: Authentication failed for
  6. 软件天才都是训练出来的
  7. 用lm()拟合回归模型
  8. [NOIP2013D2]
  9. python把文件中的邮箱分类 保存到相应的文件里面
  10. ARM中C和汇编混合编程及示例(转)