Вы можете попробовать что-то вроде этого:
@Modifying
@Query("update EARAttachment ear set ear.status = ?1 where ear.id = ?2")
int setStatusForEARAttachment(Integer status, Long id);
Вы также можете использовать именованные параметры, например:
@Modifying
@Query("update EARAttachment ear set ear.status = :status where ear.id = :id")
int setStatusForEARAttachment(@Param("status") Integer status, @Param("id") Long id);
Возвращаемое значение int - это количество строк, которые были обновлены , Вы также можете использовать void
return.
См. Больше в справочной документации.
Это кажется сложным, потому что это сложно! Вам не нужны хэш-таблица или потоки, но вам понадобится очередь приоритетов (обычно реализованная как куча и доступная как в стандартных библиотеках java, так и в Python) и дерево, которое позволяет выполнять запросы диапазона в O (log n) (Те, что в стандартных библиотеках, на самом деле не подходят, потому что вы не можете добраться до их внутреннего устройства; я бы предложил реализовать дерево AA ). А сам алгоритм все еще довольно сложен.
Можете ли вы запустить внешнюю программу? Если так, то я действительно предлагаю вам оставить тяжелую работу QHull , что очень хорошо для диаграмм Вороного. К сожалению, намного лучше, чем мы когда-либо будем.
Диаграмма Вороного - это просто диаграмма, а не структура данных или алгоритм. Я не думаю, что он подходит для поиска ближайшей точки в наборе. Построение диаграммы не изменит асимптотическую сложность вашей проблемы, хотя сделает вашу задачу более сложной и менее эффективной с точки зрения памяти. Вам лучше положить свои очки в квадродерево или что-то подобное. Если вы ищете алгоритмы, проблема, которую вы пытаетесь решить, называется «пространственное индексирование». «Ближайшая точка» - одна из задач, решаемых квадродеревьями и другими пространственными индексами.
В прошлом году я довольно много смотрел на диаграммы Вороного, и я определенно могу оценить путаницу. Существует несколько реализаций алгоритмов построения диаграмм Вороного. См. на этой странице для пары, а также здесь . Как уже упоминалось twic, Qhull определенно заслуживает внимания - MATLAB использует его для генерации диаграмм Вороного, триангуляции Делоне и подобных забавных вещей.
Вот еще одна реализация в Ruby и C, включая визуализацию: