【问题标题】:MAX of a Date column using HQL with inner join使用带有内部连接的 HQL 的日期列的 MAX
【发布时间】:2015-11-27 17:40:09
【问题描述】:

我正在尝试使用带有内部连接的休眠查询语言在 mySQL DB 中查找日期列的最大值

@Query("select u, CAST(MAX(o.last_modified AS DATE)) from com.dw.model.user.User as u left join com.dw.domain.order.Order as o on u.username=o.techid group by o.techid")
List<User> findUsers();

我收到了这个错误:-

expecting CLOSE, found 'AS' near line 1, column 36 [select u, CAST(MAX(o.last_modified AS DATE)) from com.dw.model.user.User as u left join com.dw.domain.order.Order as o on u.username =o.techid group by o.techid]

谁能帮助我,告诉我如何在 Hibernate 中写这个?

【问题讨论】:

    标签: sql hibernate date max


    【解决方案1】:

    查询的几个问题。

    1) 表别名 uselected。因为,您是按 o.techid 分组的,所以我假设您在 select 中需要它。如果您需要来自u 的某些列,请在selectgroup by 这些列中明确指定它们。

    2) CAST(MAX(o.last_modified AS DATE)) 应该是 CAST(MAX(o.last_modified) AS DATE)

    select o.techid, CAST(MAX(o.last_modified) AS DATE) 
    from com.dw.model.user.User as u 
    left join com.dw.domain.order.Order as o on u.username=o.techid 
    group by o.techid
    

    【讨论】:

    • 感谢您的快速帮助,
    • 现在我正在使用你建议的查询 @Query("select o.techid, CAST(MAX(o.last_modified) AS DATE) from com.dw.model.user.User as u left join com.dw.model.order.Order as o on u.username=o.techid group by o.techid") List findUsers();
    • @akp 但我仍然面临一个问题:- 原因:java.lang.IllegalStateException:没有左侧的 DOT 节点!
    猜你喜欢
    • 1970-01-01
    • 2020-04-30
    • 2023-03-21
    • 1970-01-01
    • 2023-03-07
    • 2011-12-09
    • 2012-11-04
    • 2022-01-18
    • 2018-09-14
    相关资源
    最近更新 更多