Обновление нескольких строк с использованием запроса JPA или собственного запроса sql в весеннем загрузочном приложении

avatar
darth_vader
8 августа 2021 в 17:18
521
1
0

Привет, я пытаюсь обновить несколько строк, используя один запрос в приложении весенней загрузки. У меня есть карта, в которой ключ возвращает идентификатор строки, а значение — это значение, которое нужно обновить для этого ключа. Значение, которое нужно обновить для ключа, отличается .

Я не могу сформировать запрос для обновления нескольких строк, используя эту Карту. Приложен псевдокод. Я использую PostgresSQL 12.1

Map<String,String> a;
@Query("UPDATE tableName set columnA=:valueList where columnB=:keyList",nativeQuery=true)
public void updateQ(List<String> keyList, List<String> valueList);
Источник
jithin
8 августа 2021 в 17:27
0

Я думаю, вам нужно использовать пакетное обновление. Вы можете легко сделать это, используя шаблон spring jdbc.

Ответы (1)

avatar
Alexandros Pan
8 августа 2021 в 17:57
0

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

UPDATE
   TABLE_NAME
SET
   TABLE_NAME.VALUE_COLUMN = table2.valueColumn
FROM
   TABLE_NAME table1
INNER JOIN
   (select * FROM (VALUES ('key1','value1'),('key2','value2'),('key3','value3')) as staticTable (keyColumn , valueColumn)) table2
ON
   table1.KEY_COLUMN = table2.keyColumn  

Я бы посоветовал вам рассмотреть другие варианты, если вы планируете обновлять сотни записей одновременно.