JPA (Hibernate) и postgres sql в пакетном режиме с использованием nativequery

Я хотел бы выполнить пакетное обновление с помощью JPA и Postgres. Я не могу использовать слияние, так как проверяю конфликт уникального ограничения, которое не является PK. Я обнаружил, что для upsert в postgres теперь мы можем использовать функциональность ON Conflict. Итак, в основном я хотел бы выполнить собственное выполнение запроса в JPA. Запрос будет таким:

INSERT INTO user (user_id, display_name )
VALUES('1', 'sg27')  
    ON CONFLICT (user_id) DO UPDATE 
SET display_name = 'sg27' RETURNING *;

Я буду перебирать список объектов и выполнять запросы.

Итак, мой вопрос заключается в том, что в случае встроенной вставки запроса мы можем использовать ручную очистку, например em.flush(). Будет ли он работать для пакетной вставки.

Если нет, то может кто-нибудь, пожалуйста, скажите мне, каковы возможные решения этой проблемы?

Спасибо за ваше время.


person Saikat Ganguly    schedule 25.11.2015    source источник


Ответы (1)


Использование собственного запроса в JPA в спящем режиме такое же, как и ваш обычный запрос в спящем режиме, за исключением того, что он специфичен для хранилища данных с подчеркиванием. Вы можете выполнить пакетную очистку, а также выполнить ручную очистку. в зависимости от размера вашей партии. никаких проблем с этим.

person Hakuna Matata    schedule 28.06.2018