先表达一下找了一个下午到现在还木有吃饭的感觉,
第一、我怎么这么笨
第二、我果然还是个菜鸟
正题:
三张表 UserSpecSer Service 以及Parameter
String hql="select uss from UserSpecSer uss inner join fetch uss.service s inner join fetch s.parameters where uss.user.userId=?";
List list=getHibernateTemplate().find(hql, userId);
一开始调试了很多遍木有报异常,但是list一直都是空的/(ㄒoㄒ)/~~
我以为不能这样查,但是又记得可以这样用,差点想把lazy取消
好吧,怀着好奇的心试着同样的方法查了其它的表
String hql="select u from User u inner join fetch u.userRoles r inner join fetch r.role ro inner join fetch ro.rolePermissions where u.userId=?";
它…………………………………………是可以粗来的……………………!!!!!!!
心中是冰火两重天,更加让我好奇为啥list为空,它特么还木有报错
再试了试debug了一下结果它就出错了(还蛮激动的~~~^_^~~~~~~)
hibernate-Path expected for join 纳尼这是什么东东,so百度罗,话说我就奇怪google一下还要fang对吧,有点懒,而且像我这种菜鸟百度就足够解决我的问题了。then 我觉得不管怎样只要能解决自己的疑惑的方法都可以,虽然说真的是百度出来的答案都是各抄各的,还不带标记转载。
正题:额…………好像我也木有找出why。因为我后面再试了试发现又不报错了*—*
哈哈……有说是因为hql中join查询
select modle(实际就是你自己取个别名) from TableA modle inner join fetch modle.B where modle.c=?
如果B是另一张表的属性的话就OK,如果是个对象的话就会出现这个错误。
但是我查的就是对象啊,也可以粗来啊。或许它说的是sql(⊙o⊙)…
其实最后的问题在于我虽然看了inner join 还有什么left join 、right join心里想是对啊就是要查两张表共有的数据啊,不西有内连接吗妈妈妈妈妈妈吗………………
泪奔啊……如果Parameter 表里面没有相应的service的数据,那么就是空值,所以就算UserSpecSer和Service有对应的值,它的整体的结果还是NULL!!!
Last:
改成
String hql="select uss from UserSpecSer uss inner join fetch uss.service s left join fetch s.parameters where uss.user.userId=?";
木有Parameter咱们就left join就好了嘛…………哭…………
特写此文警诫粗心的笨蛋仔仔!哈哈哈哈哈………………
分享到:
相关推荐
Hibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询.docxHibernate HQL查询 分页查询 模糊查询....
hql模糊查询hql模糊查询hql模糊查询hql模糊查询
hql多表查询hql多表查询hql多表查询
HQL多表查询
Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询...
hibernate查询之HQLhibernate查询之HQLhibernate查询之HQL
Hibernate中的关联查询实际上生成的是数据库表连接查询的SQL语句
Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码 Hibernate(HQL、QBC查询)源码
HQL是指定连接查询方式,而且显式指定了关联级别的查询策略
HQL查询及语法,java web开发必备。
总结的hql的查询,感觉很实用 已经写成.java格式,直接复制到项目中就能看了
HQL查询 帮助文档
hibernate hql各类查询范例
HQL查询语言基础,HQL查询语言基础,HQL查询语言基础
1、掌握Hibernate框架应用项目 2、学习HQL参数查询和Criteria查询 3、比较HQL和Criteria的不同 建立web项目,通过页面查询构造动态查询语句,struts2和hibernate框架整合。
Hibernate实例开发 HQL 与 QBC 查询
NHibernate HQL 条件查询
hql精点查询语句.doc
SSH笔记-HQL查询(基于位置参数查询、基于命名参数查询、分页查询、命名查询、投影查询报表查询、内/迫切内/左外/迫切左外连接查询)、QBC(QBC检索查询、统计查询、排序查询、HQL操作数据库)、本地SQL查询