Основная проблема, с которой я столкнулся, заключается в том, что мне нужно провести страницу из API, чтобы получить набор из 500 тысяч записей. Я создал уникальный композитный ключ на основе приведенных ниже полей, чтобы найти, существует ли какой -либо из идентификаторов в БД. Если они это делают, то я знаю, что могу сделать либо обновление на основе этих идентификаторов (установить новые значения на основе существующих идентификаторов), либо удалить на основе этих идентификаторов/затем сохранение. Мне нужен способ сделать поиск на основе коллекции (набор композитных клавиш выше). Есть ли более эффективный способ сделать это, кроме Tostring здесь? (См. Код ниже) < /p>
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>
Query: < /p>
@Query("SELECT p FROM SomeObject p WHERE CONCAT(p.srcId, ',', p.type) IN :someObjectCompositeKeys")
List findExistingBySomeObjectCompositeKeys(@Param("someObjectCompositeKeys") Set someObjectCompositeKeys);
Подробнее здесь: https://stackoverflow.com/questions/794 ... osite-keys
Эффективные поиски, чтобы найти соответствующие записи для сбора композитных ключей ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Эффективные поиски, чтобы найти соответствующие записи для сбора композитных ключей
Anonymous » » в форуме JAVA - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-