【发布时间】:2010-11-25 11:06:40
【问题描述】:
我对 JPA 比较陌生,我想专门使用 jpql 解决以下问题(注意我使用的实现是 Datanucleus):我有一个版本化实体表,我想获得最新版本对于表中的所有实体(即我有一个实体类,它有一个 id (它唯一地标识一行,一个 entityId (它在整个版本中标识实体本身)和一个时间戳;我想为所有人获取最新版本的实体entityId)。我当前的代码如下:
String innerQueryString = "SELECT entity.entityId, max(entity.timestamp) " +
"FROM Entity entity" +
"GROUP BY entity.entityId";
Query getQuery = getEntityManager().createQuery(innerQueryString);
List<Object[]> queryRes = getQuery.getResultList();
List<IEntity> ret = new ArrayList<IEntity>();
for (Object[] res : queryRes) {
ret.add(getEntity((Long)res[0], (Date)res[1]));
}
return ret;
getEntity 获取指定 entityId 的实体数据,时间戳。我在http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 找到了一些关于此代码如何在 sql 中工作的资源,但我无法创建它的 jpql 版本。帮助将不胜感激,谢谢。
【问题讨论】: