Jpa 获取最新的项目
我有一个具有以下属性的表和Java实体: 通知 -身份证 -范围 -活动 -使用者 -创作时间 -readTime null->新建邮件 如何使用一条JPQL语句获得每个范围和活动的最新通知? 自JPA版本1.0以来,没有可用的标准API不支持“SELECT TOP”或仅在实体管理器em.setmax上的语句中的限制运算符…我找不到解决方案… 有没有一种方法可以只用一条JPQL语句来完成这项任务? 使用本机SQL获取限制,否则TOP没有解决方案 例如:Jpa 获取最新的项目,jpa,jpql,Jpa,Jpql,我有一个具有以下属性的表和Java实体: 通知 -身份证 -范围 -活动 -使用者 -创作时间 -readTime null->新建邮件 如何使用一条JPQL语句获得每个范围和活动的最新通知? 自JPA版本1.0以来,没有可用的标准API不支持“SELECT TOP”或仅在实体管理器em.setmax上的语句中的限制运算符…我找不到解决方案… 有没有一种方法可以只用一条JPQL语句来完成这项任务? 使用本机SQL获取限制,否则TOP没有解决方案 例如: Notification 1 -Id:1
Notification 1
-Id:1
-scope:test
-activity:1
-user:user1
-cTime: 01.01.1999
Notification 2
-Id:2
-scope:test
-activity:1
-user:user1
-cTime: 02.02.2000
Notification 3
-Id:3
-scope:dev
-activity:2
-user:user1
-cTime: 01.01.1997
这应该重新运行:通知2和3您可以尝试下面的查询,可以相应地更改字段的顺序
//-- MAX_RESULT_SIZE is the number of results to be fetched
entityManager.createQuery("SELECT n.scope, n.activity, MAX(n.Id) FROM Notification n GROUP BY n.scope, n.activity ORDER BY n.cTime DESC").setMaxResults(MAX_RESULT_SIZE);
有关从此查询中检索结果(将是对象数组)的信息,请参阅。很抱歉,这无法解决问题。。。请看一看这个例子。你必须将这些优点分组,然后为每个小组获得最新的产品……我认为这不是解决方案。将id分组没有意义。。。此外,我需要从em返回enities,而不是n.scope、n.activity、n.Id…@mischu是数据库中的条目,按cTime的顺序排列。如果是这种情况,我已经更新了查询。id是一个序列和随机的,所以MAXn.id将不起作用。。。此外,n.cTime DESC的订单将不适用于JPA 1,因为GROUP BY。。。