【问题标题】:How to write the HQL query如何编写 HQL 查询
【发布时间】:2016-01-17 20:17:01
【问题描述】:

我有一个用于保存教育经验的数据库表。它有4个属性。

  1. userId(与用户表相关的外键)
  2. beginDay(注册时间)
  3. endDay(毕业时间)
  4. 学校(学校名称)

现在我有一个 userId,我想根据 userId 选择最后的教育体验。

hql查询怎么写?

我写了

select * from education where userId = 100 and beginDay = max(beginDay)

但查询错误。控制台输出无效使用组函数。

【问题讨论】:

    标签: mysql hql


    【解决方案1】:

    只需使用此查询:

    SELECT * FROM education WHERE userId = 100 ORDER BY beginDay DESC LIMIT 1
    

    【讨论】:

    • 可以选择userId = 100的最后一次教育经历吗?
    【解决方案2】:
    FROM education e where e.UserId = 100 and e.beginDay = max(e.beginDay)
    

    应该可以。我不知道你的数据库到底是什么样子

    如果我没记错的话,如果它是外键值,则需要获取完整的类结构。好久不见了……

    FROM education e where e.User.UserId = 100 and e.School.beginDay = max(e.beginDay)
    

    【讨论】:

    • 我觉得国外不重要。
    • SELECT * FROM education WHERE userId = 100 ORDER BY beginDay DESC LIMIT 1.这个查询可以选择userId=100的最后一次教育经历?我现在没有计算能力来测试
    • 你认为它会起作用吗?我觉得这是解决我的问题的好方法
    • 在使用 HQL 时,我曾经使用类似的 HQL 语法。我有一段时间没碰它了。如果您的 XML 映射在逻辑上定义,我认为它会起作用。我没有类层次结构,所以我很难猜到。如果我是正确的,那么我相信它会起作用
    • 感谢您的回答
    【解决方案3】:
    String hql = "select * from education where userId = 100 and beginDay = max(beginDay)";
    Query query = session.createQuery(hql);
    List results = query.list();
    

    【讨论】:

    • 这是完整的 HQL 查询语法。
    • 请解释你的答案。
    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2018-04-06
    • 2014-03-18
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多