Sql Hibernate查询具有最大结果的多个类

Sql Hibernate查询具有最大结果的多个类,sql,hibernate,Sql,Hibernate,我有两个类(一个和两个)和两个相应的表(“一”和“二”)。每个表都有一个时间列(“timeOne”和“timeTwo”) 我希望在一个查询中获得这两个表的最后10个结果。基本上,如果表“1”中有30行,其中3行是今天添加的,表2有30行,其中7行是今天添加的,那么我的查询应该返回10行(1中有3行,2中有7行) 如果可能的话,我希望在单个Hibernate查询中执行此操作。我认为使用本机查询是最简单的 我这样说是因为您可以在JPQL中使用如下内容: Query q = entityManager

我有两个类(一个和两个)和两个相应的表(“一”和“二”)。每个表都有一个时间列(“timeOne”和“timeTwo”)

我希望在一个查询中获得这两个表的最后10个结果。基本上,如果表“1”中有30行,其中3行是今天添加的,表2有30行,其中7行是今天添加的,那么我的查询应该返回10行(1中有3行,2中有7行)


如果可能的话,我希望在单个Hibernate查询中执行此操作。

我认为使用本机查询是最简单的

我这样说是因为您可以在JPQL中使用如下内容:

Query q = entityManager
                .createQuery("select f, b from Foo f, Bar b");

q.setMaxResults(2);
这将生成以下SQL:

select foo0_.id as id0_0_, bar1_.id as id1_1_, foo0_.val as val0_0_, bar1_.val as val1_1_ from dbo.Foo foo0_ cross join dbo.Bar bar1_ limit ?
(请注意,为了简洁起见,我省略了排序,但您可以按排序)

我相信你会从交叉连接中得到(maxResults*maxResults)行,尽管你可以将结果集折叠成不同的实体。。。它不太可能是你想要的(也不会尽可能高效)

因此,使用本机查询将是最简单(编程)和最有效的,而不是试图处理上述混乱


简言之:不,据我所知,您无法通过JPA或Hibernate以产生连接到持久化单元的类型安全结果的方式来完成您想要做的事情。

我已经尝试过了。首先,我得到一个对象,而不是一个特定的类型。第二,如果我需要从10个不同的表中查询这个,我担心它不会有效率。经过一番思考后,我认为你的方法行不通。右边需要一个订单。让我澄清一下我的答案,因为我不是建议你按照我给你看的做(尽管你可以写“按f.timeOne,b.timeTwo下单”)——而是建议你使用本地查询。谢谢你,道格。你对实际的查询有什么想法吗?