Получить сумму совпадений записей, а затем обновить эти записи с помощью JPA - PullRequest
1 голос
/ 23 февраля 2020

Во-первых, я хочу получить СУММ сопоставленных записей по некоторым параметрам, для которых я написал следующий запрос -

@Query(value = "select sum(charges) from usage_logs where X=:x and Y=:y and Z=:z  and status=1", nativeQuery = true)
Double getCharges(@Param("x")String x,@Param("y") String y,@Param("z") String z);

В то же время я хочу обновить статус до "0" сопоставленных записей (сразу после того, для чего рассчитываются сборы).

Итак, есть ли какой-либо оптимизированный способ обновления записей после получения СУММ или мне нужно получить идентификаторов соответствующих записей и обновите их затем отдельно, используя пакетную функцию.

1 Ответ

0 голосов
/ 23 февраля 2020

Вы можете использовать транзакцию для этого. SQL будет этими четырьмя утверждениями.

START TRANSACTION;
select sum(charges) from usage_logs where X=:x and Y=:y and Z=:z  and status=1 FOR UPDATE;

UPDATE usage_logs SET status=0 where X=:x and Y=:y and Z=:z  and status=1;
COMMIT;

Транзакция защищает вашу операцию от вмешательства других объектов, происходящих одновременно в вашей базе данных. Это гарантирует, что оба использования вашего предложения WHERE выбирают одинаковые строки. И если ваша программа logi c решит, что вы не хотите продолжать обновление, вы можете сказать ROLLBACK; вместо COMMIT;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...