java - Spring data JPA Specification - 返回列表并限制结果属性在列表中仅出现一次
问题描述
我正在尝试构建一个规范,该规范将 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);
}
我正试图在我拥有的东西之上打包一些东西,但似乎没有任何效果。可能的解决方法当然是不要从数据库加载一个列表,而是每个 fooId 和 oldThanMillis 一个一个地加载它,限制为 1 ......如果一个一个地加载它,这是一个不好的做法吗?请问有什么建议吗?谢谢...
解决方案
通常,这是通过按独特的排序和 using 来处理的setMaxResults(1)
,但我不知道 Spring Data 如何支持这一点。
推荐阅读
- c# - How to create a installer for C# windows application with SQL Server database integrated
- javascript - How do I have my bot remove an embed after a certain amount of time?
- python - 当一列单元格的值为零时,将另一列中的值设为零,将其下方的单元格设为零
- r - 多级负二项式回归的每个随机因子的 ICC
- c++ - VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- swift - 给定任何 x 值作为输入,如何获取 NSBezierPath 的 y 值
- java - Android中的嵌套网络视图
- python - 使用 TensorBoard 进行分析只会在“配置文件”选项卡中的 5 个可用工具中生成一个 (trace_viewer)
- regex - 正则表达式匹配贪婪、可选、非捕获组
- python - 如何修复 Python 中的 Module not found 错误?