epsilonmajorquezero:
私がしようとしているquery
と、データベースlist of Id's
が存在しない場合には、彼らといくつかのものを行う、と。
私の計画は次のように何かをすることでした
List<Optional<MyObject>> fingById(Set<String> myIds);
私は、彼らが注文されることでさえ、すべてのIDの存在する場合には何も保証の場合は、私と仮定したので、私はそれらのいくつかが存在している場合ので、私は、私はしません周りにいくつかのランダムなヌルoptionalsを取得します、箱から出して、この文句を言わないの仕事を理解しますそれを返されたIDに5月のことができるように。
基本的に私が最後に何をする必要があるか、これらのオブジェクトを取得する一つのフィールドを更新するか、またはデフォルト値でそれらを作成した場合は存在しないことです。
バッチでこれを行うための最善の方法はどれですか?
感謝:)
チャールズDowbecki:
あなたは自分の中に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;
}