`
ssy8110
  • 浏览: 15149 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

有空的都来看看这个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应当如何写。执行的结果也一样.麻请达人告知.
分享到:
评论
6 楼 BirdGu 2007-03-23  
如果你要用HQL,就要从对象模型出发思考问题,而不是仍然用SQL的思考方法。

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

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

如果仅仅是把SQL翻译成HQL,那么用Hibernate的意义实在不大。
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 ,就不知道咋弄了.
4 楼 BirdGu 2007-03-22  
那你先说说你到底要实现什么功能吧。
3 楼 ssy8110 2007-03-22  
BirdGu 写道
select user 
from Userinfo as user left outer join user.groups as group
where 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
括号中和括号外的关系。很显然你的语句是不能实现相同功能的.
2 楼 BirdGu 2007-03-21  
select user 
from Userinfo as user left outer join user.groups as group
where group.id=1


Userinfo和Group之间应该有个多对多的关系。
1 楼 ssy8110 2007-03-21  
怎么没人知道吗?

相关推荐

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    Hibernate框架]Hql语句in中带参数的写法

    在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的写法,以及解决相关问题的方法。 一、HQL语句in中带参数的写法 在HQL语句中,使用in关键字可以实现集合参数的传递,例如: ```java String hql = "FROM ...

    Hibernate-HQL语句多对多写法

    "Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...

    HQL语句大全HQL语句大全

    - 使用Session的`createQuery`方法来创建Query对象,并将HQL语句作为参数传入。 ```java Query query = session.createQuery(hql); ``` 4. **设置参数值** - 如果HQL语句中有参数,则需要为这些参数设置值。 ...

    全面解析HQL语句 非常详细直接的HQL语句的功能介绍

    描述:“非常详细直接实用的HQL语句的功能介绍看过的人保准都说好” 本篇文章将深入探讨HQL(Hibernate Query Language)的核心功能及其在数据查询方面的强大能力。HQL是一种面向对象的查询语言,用于在Hibernate...

    hibernate-HQL语句大全

    hibernate-HQL语句大全

    hql语句大全hql语句大全

    ### HQL语句详解:精通Hibernate查询语言 #### 引言 HQL(Hibernate Query Language)是Hibernate框架中用于执行数据库操作的一种强大的查询语言。它提供了面向对象的语法,允许开发人员以一种接近于编程语言的方式...

    HQL语句的语法

    HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的SQL-like语言,它允许开发者以面向对象的方式来查询数据库。HQL语句的语法结构与SQL相似,但更注重对象和类的概念。以下将详细介绍...

    最新HQL语句实例代码

    常见HQL语句的示例包括输出结果,以及语句的分析总结

    hql语句语法详解hql语句

    这里的 `Person` 是一个实体类,`AS p` 表示给 `Person` 类指定了一个别名 `p`,在后续的查询语句中可以通过这个别名来引用该实体类。如果不使用别名,则可以直接使用实体类名称。 #### 2. Select 子句 `SELECT` ...

    HQL语句查询

    HQL语句查询

    常用的hql语句用法解析

    本文将深入解析HQL语句的常见用法。 1. 大小写敏感性 HQL对Java类和属性的名称是大小写敏感的,但在关键字和表名方面,除了类名和属性名之外,HQL不区分大小写。因此,`SeLeCT`、`sELEct`和`SELECT`被视为相同,但`...

    hql基础语句

    - ** Table **:通过一个特定的数据库表来生成主键,适用于跨数据库系统的情况。 - ** UUIDHex **:生成16进制表示的UUID字符串。 - ** Native **:根据所使用的数据库选择最合适的策略。 ### 2. HQL基本语句 HQL...

    HQL语句(结合实例).doc

    HQL语句(结合实例).doc HQL语句(结合实例).doc HQL语句(结合实例).doc

    HQL语句详解Select/update/deletefromwhere...

    需要注意的是,在Hibernate中查询时,如果实体之间存在继承关系(如`Employee`类继承自`HourlyEmployee`和`SalariedEmployee`),则可以通过类似`"from Employee"`这样的HQL语句来查询基类`Employee`的所有子类实例...

    hql语句 使用大全

    当需要同时查询多个字段时,可以在HQL语句中指定这些字段,并通过索引来访问这些字段值: ```java String hql = "select u.name, u.age from com.mypack.User4 u"; Query query = session.createQuery(hql); List ...

    学习HQL语句

    投影函数是 HQL 中的一个基本概念,它返回查询结果中的对象或对象的属性。使用 from 和 select 子句可以完成投影操作。from 子句返回指定的类的所有实例,而 select 子句可以选择对象的某些属性。 例如,from Order...

    HQL语句函数汇总(汇集了hql语句中大部分常用的函数)

    汇集了hql语句中大部分常用的函数 ABS(n) 取绝对值数学函数 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性])

Global site tag (gtag.js) - Google Analytics