Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Jpa 获取最新的项目_Jpa_Jpql - Fatal编程技术网

Jpa 获取最新的项目

Jpa 获取最新的项目,jpa,jpql,Jpa,Jpql,我有一个具有以下属性的表和Java实体: 通知 -身份证 -范围 -活动 -使用者 -创作时间 -readTime null->新建邮件 如何使用一条JPQL语句获得每个范围和活动的最新通知? 自JPA版本1.0以来,没有可用的标准API不支持“SELECT TOP”或仅在实体管理器em.setmax上的语句中的限制运算符…我找不到解决方案… 有没有一种方法可以只用一条JPQL语句来完成这项任务? 使用本机SQL获取限制,否则TOP没有解决方案 例如: Notification 1 -Id:1

我有一个具有以下属性的表和Java实体:

通知

-身份证

-范围

-活动

-使用者

-创作时间

-readTime null->新建邮件

如何使用一条JPQL语句获得每个范围和活动的最新通知? 自JPA版本1.0以来,没有可用的标准API不支持“SELECT TOP”或仅在实体管理器em.setmax上的语句中的限制运算符…我找不到解决方案… 有没有一种方法可以只用一条JPQL语句来完成这项任务? 使用本机SQL获取限制,否则TOP没有解决方案

例如:

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。。。