【问题标题】:How to select from HQL如何从 HQL 中选择
【发布时间】:2011-01-02 13:55:47
【问题描述】:

我是 HQL 新手,有一个需要转换的 SQL 表达式,但无法选择 SQL 语句是:

select SenseDate as Time,SenseValue as Value
from UserData
where NetworkID = '23'
and IODeviceID = '129'
and SenseDate >=  DateAdd("d",-1, GETDATE())
and SenseDate<=GETDATE()

我可以毫无问题地在 HQL 中运行这部分:

from UserData 
where NetworkID = '23'
and IODeviceID = '129'
and SenseDate >=  DateAdd(d,-1, GETDATE())
and SenseDate<=GETDATE()

但是我只希望返回 SenseDateSenseValue 值,有人可以告诉我如何选择,因为当我尝试添加 select SenseDate, SenseValue 等时。我在 Netbeans 中不断收到错误

【问题讨论】:

    标签: java hibernate select hql


    【解决方案1】:

    你必须使用投影之类的东西。

    这意味着,您必须创建一个类来保存您尝试检索的结果。

    在你的情况下,这可能看起来像这样:

    public class SenseUserData
    {
        public DateTime SenseDate
        {
            get;
            private set;
        }
    
        public Decimal SenseValue
        {
            get;
            private set;
        }
    
        public SenseUserData( DateTime date, Decimal value )
        {
           this.SenseDate = date;
           this.SenseValue = value; 
        }
    }
    

    然后,你必须让 NHibernate 知道这个类的存在。 您可以通过“导入”它来做到这一点。 因此,这意味着您不必为其创建映射文件,只需在 hbm 文件中执行此操作:

    <import class="myclassname" />
    

    然后,您可以在 HQL 中执行此操作:

    select new SenseUserData (SenseDate, SenseValue) from UserData
    

    【讨论】:

      【解决方案2】:

      您可以使用 HQL 选择字段/列。如下所示:

      select
          SenseDate,
          SenseValue
      from
          UserData
      where
          NetworkID = '23'
      and
          IODeviceID = '129'
      and
          SenseDate >= DateAdd(d, -1, GETDATE())
      and
          SenseDate <= GETDATE()
      

      执行此操作时,您将收到一个对象数组列表:

      final List<Object[]> values = query.list();
      

      列表中的每个元素代表一个找到的行。数组本身包含两个选定字段,顺序与您在语句中声明它们的顺序相同。

      【讨论】:

        【解决方案3】:

        看起来您需要执行 hibernate 所谓的投影。以下是有关如何在 HQL 中进行预测的一些信息:

        http://www.devarticles.com/c/a/Java/Hibernate-HQL-in-Depth/1/

        【讨论】:

          【解决方案4】:

          我认为HQL 现在有“新”关键字。

          选择新的家庭(母亲,伴侣, 后代)来自 Eg.DomesticCat 作为母亲 加入mother.Mate作为伴侣 left join mother.Kittens as offspr

          类似于 Criteria 世界中的投影/结果转换器。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-02-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-20
            • 2016-06-25
            • 1970-01-01
            相关资源
            最近更新 更多