如何编写 hql 查询或条件查询以根据时间戳获取最新记录
Posted
技术标签:
【中文标题】如何编写 hql 查询或条件查询以根据时间戳获取最新记录【英文标题】:How to write hql query or criteria query to fetch latest records based on timestamp 【发布时间】:2014-04-07 13:54:41 【问题描述】:嗨,我是 ORM 技术的新手,因此可以帮助如何编写 hql 或条件查询以根据时间戳获取最新记录。 这里 Eventdata 域属性名称将与下面提到的列名称相同。 我有这样的桌子 事件数据:
AccountId DeviceId timestamp Address
fuel mdemo143 1389716109 Bangalore Road, Rajendra Nagar, Mysore, Karnataka
fuel mdemo469 1389757662 Bharath International Travels, Diwan's Road
fuel mdemo731 1390179714 Ring Road, Hebbalu, Mysore,
fuel mdemo143 1390148225 Gandhinagar, Mysore
fuel mdemo469 1389757682 Bharath International Travels, Diwan's Road
fuel mdemo469 1389759662 Bharath International Travels, Diwan's Road
fuel mdemo731 1390179714 Ring Road, Hebbalu, Mysore,
fuel mdemo731 1390279714 Ring Road, Hebbalu, Mysore,
我需要的输出表如下:
AccountId DeviceId timestamp Address
fuel mdemo143 1390148225 Sun, 19 Jan 2014 16:17:05 GMT Gandhinagar, Mysore
fuel mdemo469 1389759662 Wed, 15 Jan 2014 04:21:02 GMT Bharath International Travels, Diwan's Road
fuel mdemo731 1390279714 Tue, 21 Jan 2014 04:48:34 GMT Ring Road, Hebbalu, Mysore
请帮助我。在此先感谢
【问题讨论】:
【参考方案1】:考虑使用ORDER BY
和Query#setMaxResults
类似的东西
queryString = "SELECT e FROM Eventdata e ... ORDER BY e.timestamp";
session.createQuery(queryString).setMaxResults(10);
应该可以。
【讨论】:
【参考方案2】:如果您尝试获取基于 timestamp
的记录,您可以使用类似:
@SuppressWarnings("unchecked")
public List<String> getData(Date d)
Query query = em.createQuery("SELECT e FROM EventDate e WHERE e.timestamp > :d ORDER BY e.timestamp");
query.setParameter("d", d);
List<String> queryResults = query.getResultList();
return queryResults;
这将返回指定timestamp
之后的记录
【讨论】:
以上是关于如何编写 hql 查询或条件查询以根据时间戳获取最新记录的主要内容,如果未能解决你的问题,请参考以下文章