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

目前,我正在使用以下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();


这将返回所有具有小于或等于当前时间的updateDate的价格标签,并对其降序排列。之后,我只使用第一个条目即可返回。
是否有可能使HQL获得所有商品的所有最新价格标签?

例如,表PriceTags将包含:

Id   goods_id   price   updatedDate
1    101        100     2019-07-30
2    101        150     2019-07-31
3    102        120     2019-07-28
4    102        90      2019-06-29
5    102        130     2020-01-01


可以说今天是2019-08-01
我想获得第2行和第3行,因为它们是直到当天的最新条目。第5行直到明年1月才相关,因此不会退还。

最佳答案

我仅打算描绘一种方式,而不是给出适当的查询。

我假设goodsId,priceTag和updatedDate是表PriceTag中的3列。

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

10-04 23:39