gpt4 book ai didi

java - Hibernate - 编写查询所需的帮助

转载 作者:行者123 更新时间:2023-12-01 13:17:12 25 4
gpt4 key购买 nike

我是 hibernate 新手,正在尝试使用 hibernate 进行查询。直接在数据库中执行时查询工作正常。你能帮我在 hibernate 状态下写它吗?

select A.SL_NO, A.DATETIME,A.IP,A.CATEGORY,A.SUBCATEGORY,A.VALUE FROM APP_MON_REF_TABLE A, 
(SELECT category, max(to_char(datetime,'YYYY-MM-DD HH24:MI:SS')) maxtime from APP_MON_REF_TABLE group by category) B
where A.category = B.category and to_char(A.datetime,'YYYY-MM-DD HH24:MI:SS') = B.maxtime

预期答案如下

SL_NO        DATETIME         IP      CATEGORY  SUBCATEGORY VALUE

5 01/02/2014 12:12:30 12 TABLE SPACE DATA01 65%
6 01/02/2014 12:12:30 23 TABLE SPACE DATA01 65%

提前致谢。数学

最佳答案

HQL 不适用于内联 View ,即 (from (select ... ))。但是,在您的情况下,您只是使用该 View 来根据类别建立最大日期。因此,我首先将您的 sql 查询重写为如下所示:

SELECT A.sl_no, 
A.datetime,
A.ip,
A.category,
A.subcategory,
A.value
FROM app_mon_ref_table A
WHERE A.datetime = (SELECT max(datetime) maxtime
FROM app_mon_ref_table b
where B.category = A.category
GROUP BY category)

*注意:您实际上也不需要那些 to_char,除非它们实际上是时间戳字段。日期(在 Oracle 中)将与第二个决议进行比较。我已经从我的答案中删除了那些 to_char cols,因为无论如何这是一个不同的问题。*

至于hql中的重写,你还没有发布POJO代码,所以很难,但它与sql非常相似:

from AppMonRef A where A.datetime = (SELECT max(datetime) maxtime 
FROM AppMonRef b
where B.category = A.category
GROUP BY category)

如果您想限制这些字段,您可以添加投影。但是这个 HQL 查询将返回一个托管 AppMonRef 对象,该对象遵守您对属性进行延迟加载的任何声明。

关于java - Hibernate - 编写查询所需的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22370130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com