gpt4 book ai didi

java - 查找 JPA 的最新条目

转载 作者:行者123 更新时间:2023-12-02 05:23:57 25 4
gpt4 key购买 nike

我找到this thread 非常有帮助,但由于 JPA 的性质,建议中的实现似乎不太有效。

我正在寻找一种解决方案来获取由JPA实现的分组连接查询的最新条目,所以这不是一个简单的工作。我的实现是将“ORDER BY time DESC”放在最后,并从返回集合中选取第一个,而不是使用也必须引入子查询的 MAX() 函数,但我想知道这是一个好的选择吗?

这是我通过另一个示例中的示例进行的复杂查询:

"SELECT oo FROM Order AS oo WHERE oo.id IN " +
"(SELECT temp.id FROM " +
"(SELECT t.order.id AS id, MAX(t.order.orderTime) AS ordTime FROM Transaction t " +
"WHERE t.order.name= :name " +
"GROUP BY t.order.name) AS temp" +
")";

我认为这是一个很好的选择,但不确定:

String query = "SELECT t.order FROM Transaction AS t " + 
" WHERE t.order.name= :name " +
" ORDER BY t.order.orderTime DESC";

// and simply just pick up the 1st as the latest entry from result:
Order order = em.createQueryquery , Order .class).getResultList().get(0);

最佳答案

您的解决方案的问题在于它将加载列表中的所有条目供您选择一个。根据this答案,您需要通过调用query.setMaxResults(1)将结果限制为1。除此之外,这是一个完美的解决方案。您还可以使用 query.getSingleResult() 获取单个实体,但如果没有此类记录,请注意 NoResultException

关于java - 查找 JPA 的最新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com