gpt4 book ai didi

java - 如何在 Spring Data Repo 中模仿 List> 之类的行为?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:29 24 4
gpt4 key购买 nike

我正在尝试使用 Id 列表查询数据库,如果它们不存在,则用它们做一些事情。

我的计划是做类似的事情

List<Optional<MyObject>> fingById(Set<String> myIds);

我知道这不会开箱即用,因为我想即使所有的 id 都存在,也不能保证它们会被订购,所以如果它们中的一些存在,我会得到一些随机的 null 可选值,我可以围绕它们将无法访问返回它的 Id。

基本上我最终需要做的是检索这些对象,更新一个字段或使用默认值创建它们(如果不存在)。

批量执行此操作的最佳方式是什么?

谢谢:)

最佳答案

您可以通过 ID 将结果映射到 Map<String, Optional<MyObject>>然后用 Optional.empty() 填空.

List<MyObject> findByIdIn(Set<String> ids);

default Map<String, Optional<MyObject>> mapByIdIn(Set<String> ids) {
Map<String, Optional<MyObject>> found = findByIdIn(ids)
.stream()
.collect(Collectors.toMap(MyObject::getId, Optional::of));
ids.stream()
.filter(id -> !found.containsKey(id))
.forEach(id -> found.put(id, Optional.empty()));
return found;
}

关于java - 如何在 Spring Data Repo 中模仿 List<Optional<T>> 之类的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215510/

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