Собственный SQL-запрос UPSERT для сбора как @Param метода репозитория JPAJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Собственный SQL-запрос UPSERT для сбора как @Param метода репозитория JPA

Сообщение Anonymous »

Мне нужно перебрать коллекцию Entities и применить UPSERT для каждого элемента атомарно. Как я это вижу - просто нужно отправить эту коллекцию в SQL-запрос с помощью SpEL.
Я знаю, что я могу перебирать коллекцию с помощью кода Java и отправлять сущности один за другим, но это будет не так атомарно, как я хочу осознать. (Или я чего-то не понимаю).
Я написал такой запрос

Код: Выделить всё

DO
$do$
BEGIN
FOR entity IN :#{#entitiesCollection}
LOOP
INSERT INTO entity_table AS e (id,
index,
enum_field,
version,
is_active)
VALUES (nextval('entity_id_seq'),
:entity.index,
:entity.enum_field.name(),
:entity.version,
:entity.is_active)
ON CONFLICT (index) DO UPDATE SET field_value = :entity.field.getValue(),
version     = :entity.version,
is_active   = :entity.isActive
WHERE (e.index = :entity.index)
AND ( (e.version < :entity.version)
OR ((e.is_active  :entity.isActive) AND (e.version = :entity.version)) );
END LOOP;
END
$do$
для моего метода репозитория

Код: Выделить всё

@Query(nativeQuery = true, value = "......")
void upsertCollection(@Param("entitiesCollection") List entitiesCollection);
но получил исключение

Код: Выделить всё

QueryException: Named Parameter Not Bound : entity.version
Я понимаю — ошибка в SpEL ссылается на @Param, но я не могу найти решение.
Буду признателен за вашу помощь!

Подробнее здесь: https://stackoverflow.com/questions/787 ... ory-method
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»