繁体   English   中英

Spring 数据 JPA 规范 - 返回列表并限制结果属性在列表中只出现一次

[英]Spring data JPA Specification - return list and limit result-attribute to occur only once in the list

我正在尝试构建一个规范,该规范将 Set UUID fooIds 和 long oldThanInMillis 作为输入。

我的方法应该返回一个结果列表。 结果有一个 fooId 作为字段(不是 id)。 在表中,可能有许多具有相同 fooId 的对象。 但是我希望每个 fooId 只得到 1 个结果。

我目前的规格是这样的:

private Specification<Result> buildSpec(Set<UUID> fooIds, long olderThanMilis)
   {
       Specification<Result> idSpec = (root, query, builder) -> builder.or(builder.in(root.get("fooId")).value(clientPoses));
       Specification<Result> olderThanSpec = (root, query, builder) -> builder.lessThanOrEqualTo(root.get("created"), olderThanMilis);

       return idSpec.and(olderThanSpec);
   } 

我试图在我拥有的东西之上打包一些东西,但似乎没有任何效果。 可能的解决方法当然不是从 DB 加载一个列表,而是每个 fooId 和 oldThanMillis 一个一个加载它,限制为 1 ......如果一个一个加载它,这是否是一种不好的做法? 请问有什么建议吗? 谢谢...

通常,这是通过按独特的东西排序并使用setMaxResults(1) ,但我不知道 Spring Data 如何支持这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM