使用nativequery的JPA(Hibernate)和postgres sql批处理upsert

Sai*_*uly 8 postgresql hibernate jpa upsert batch-insert

我想JPA和Postgres 进行批量upsert .我不能使用merge,因为我正在检查不是PK的Unique Constraint上的冲突.我发现要在postgres中进行upsert,我们现在可以使用ON Conflict功能.所以基本上我想在中执行本机查询JPA.查询将如下:

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

我将循环遍历对象列表并进行查询.

所以我的问题是在本机查询插入的情况下,我们可以使用手动刷新em.flush().它是否适用于批量插入.

如果没有,那么有人可以告诉我这个问题的可能解决方案是什么?

谢谢你的时间.

Hak*_*ata 0

在 hibernate JPA 中使用本机查询与普通的 hibernate 查询相同,只是它特定于下划线数据存储。您可以进行批量更新插入,也可以进行手动刷新。根据您的批量大小。没有问题。