Ich habe diesen Code -Snippet, der übereinstimmende Datensätze basiert, die auf einer zusammengesetzten Schlüsselzeichenfolge basieren, und es ist sehr langsam. < /p>
Hauptmethode: < /p>
Code: Select all
private Set existingValues(Set existingValuesBatched) {
Set stringCompositeKeys = toStringCompositeKeys(existingValuesBatched);
return someObjectRepository
.findExistingBySomeObjectCompositeKeys(stringCompositeKeys)
.stream()
.map(someObject -> new SomeObjectCompositeKey(someObject.getSrcId(), someObject.getType()))
.collect(Collectors.toSet());
}
< /code>
toString: < /p>
private Set toStringCompositeKeys(Set compositeKeys) {
return compositeKeys
.stream()
.map(SomeObjectCompositeKey::toString)
.collect(Collectors.toSet());
}
< /code>
Abfrage: < /p>
@Query("SELECT p FROM SomeObject p WHERE CONCAT(p.srcId, ',', p.type) IN :someObjectCompositeKeys")
List findExistingBySomeObjectCompositeKeys(@Param("someObjectCompositeKeys") Set someObjectCompositeKeys);