Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法通过HQL获取小于或等于当前时间的最新条目?_Java_Spring_Hibernate_Hql - Fatal编程技术网

Java 有没有办法通过HQL获取小于或等于当前时间的最新条目?

Java 有没有办法通过HQL获取小于或等于当前时间的最新条目?,java,spring,hibernate,hql,Java,Spring,Hibernate,Hql,我正在尝试获取最新的数据,这些数据在将来的日期之前不会被应用 目前,我正在使用以下HQL: int x = goods.getId() String hql = "FROM PriceTags as atcl WHERE atcl.goods_id = '"+x+"' AND atcl.updatedDate <= CURTIME() ORDER BY updatedDate DESC"; return (PriceTags) entityManager.createQuery(hql).

我正在尝试获取最新的数据,这些数据在将来的日期之前不会被应用

目前,我正在使用以下HQL:

int x = goods.getId()
String hql = "FROM PriceTags as atcl WHERE atcl.goods_id = '"+x+"' AND atcl.updatedDate <= CURTIME() ORDER BY updatedDate DESC";
return (PriceTags) entityManager.createQuery(hql).setMaxResults(1).getSingleResult();
假设今天是2019-08-01
我想得到第2行和第3行,因为它们是直到今天为止的最新条目。第5行直到明年1月才有意义,因此不会返回。

我只想描述一种方式,而不是给出正确的查询

我假设goodsId、priceTag和UpdateDate是表priceTag中的3列

select distinct(p.goodsId), p.priceTag, p.updatedDate from PriceTag p order by p.updatedDate desc

我只是想描绘一种方式,而不是提出正确的问题

我假设goodsId、priceTag和UpdateDate是表priceTag中的3列

select distinct(p.goodsId), p.priceTag, p.updatedDate from PriceTag p order by p.updatedDate desc

为此需要一个窗口函数,请参见。这可以通过以下方式实现:

@实体
@资料
@表(name=“PriceTags”)
公共静态类价格标签{
@身份证
私有int-id;
古德希德私人酒店;
私人int价格;
私人日期更新日期;
}
...
FluentQuery query=FluentJPA.SQL((PriceTag标记)->{
Long rowNumber=聚合方式(ROW_NUMBER())
.OVER(分区(通过(tag.getGoodsId()))
.ORDER(BY(tag.getUpdateDate()).DESC())
.AS();
选择(标签);
从(标签);
其中(lessEqual(tag.getUpdateDate(),CURRENT_DATE())和&rowNumber==1);
});
return query.createQuery(em,PriceTag.class).getResultList();
这是结果SQL

SELECT t0.* 
FROM PriceTags t0 

WHERE ((t0.updated_date <= CURRENT_DATE   ) AND
( ROW_NUMBER()  OVER(PARTITION BY  t0.goods_id   ORDER BY  t0.updated_date  DESC   ) = 1))
选择t0.*
从价格标签到

其中((t0.updated_date您需要一个窗口函数,请参阅。这可以通过以下方式完成:

@实体
@资料
@表(name=“PriceTags”)
公共静态类价格标签{
@身份证
私有int-id;
古德希德私人酒店;
私人int价格;
私人日期更新日期;
}
...
FluentQuery query=FluentJPA.SQL((PriceTag标记)->{
Long rowNumber=聚合方式(ROW_NUMBER())
.OVER(分区(通过(tag.getGoodsId()))
.ORDER(BY(tag.getUpdateDate()).DESC())
.AS();
选择(标签);
从(标签);
其中(lessEqual(tag.getUpdateDate(),CURRENT_DATE())和&rowNumber==1);
});
return query.createQuery(em,PriceTag.class).getResultList();
这是结果SQL

SELECT t0.* 
FROM PriceTags t0 

WHERE ((t0.updated_date <= CURRENT_DATE   ) AND
( ROW_NUMBER()  OVER(PARTITION BY  t0.goods_id   ORDER BY  t0.updated_date  DESC   ) = 1))
选择t0.*
从价格标签到

其中((t0.updated_date)您可以包括一些示例输入/输出数据吗?用示例更新了我的问题吗?您可以包括一些示例输入/输出数据吗?用示例更新了我的问题