首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

有空的都来看看这个HQL语句的写法有关问题

2012-11-20 
有空的都来看看这个HQL语句的写法问题这是一个SQL :select * from userinfo a left join(select b.* from

有空的都来看看这个HQL语句的写法问题
这是一个SQL :
select * from userinfo a left join  (
select b.* from userinfo a left outer join  usergroupinfo b on a.oid=b.userinfooid where b.groupoid=1) b  on a.oid = b.userinfooid

我把上述SQL 转化为HQL:
from com.kmi.expert.model.Userinfo as u left outer join  (select b from com.kmi.expert.model.Userinfo a left outer join  a.Usergroupinfos b where b.groupoid=1) as ug

执行就是不正确,假设所有的配置关系都正确,所有的客观环境都没有问题,要将上面的SQL转化为HQL应当如何写。执行的结果也一样.麻请达人告知.select user from Userinfo as user left outer join user.groups as groupwhere group.id=1

Userinfo和Group之间应该有个多对多的关系。select user from Userinfo as user left outer join user.groups as groupwhere group.id=1

Userinfo和Group之间应该有个多对多的关系。兄台,请注意SQL 语句:select * from userinfo a left join (
select b.* from userinfo a left outer join usergroupinfo b on a.oid=b.userinfooid where b.groupoid=1) b on a.oid = b.userinfooid
括号中和括号外的关系。很显然你的语句是不能实现相同功能的. 4 楼 BirdGu 2007-03-22   那你先说说你到底要实现什么功能吧。 5 楼 ssy8110 2007-03-23   此SQL语句是这样:用户表为主表, 用户组表为用户与组的中间表,首先要实现用户表与用户组表的关联查询(select b.* from userinfo a left outer join usergroupinfo b on a.oid=b.userinfooid where b.groupoid=1),组序列号条件为1,这取出了所有被分配到该组的用户,之后要处理的最终结果为:取所用用户数据及它们与组的分配关系;上述所取到的结果再与用户表关联,得到所有用户与组的关系,也就是说,用户表数据如果与组存在关系,那么该列的数据有值,若不存在关系列值为Null,也就是整个SQL语句的效果。
   现在要把这个SQL语句转成HQL ,就不知道咋弄了. 6 楼 BirdGu 2007-03-23   如果你要用HQL,就要从对象模型出发思考问题,而不是仍然用SQL的思考方法。

我认为原来的SQL的功能可以抽象为:“找出所有属于id为1的group的用户,及他们所属的组。”

我给出的HQL可以查出所有属于id为1的group的用户。然后根据用户和组之间的关系(在对象模型中),自然可以找到他们所属的组。

如果仅仅是把SQL翻译成HQL,那么用Hibernate的意义实在不大。

热点排行