hibernate - 使用 native 查询的 JPA(Hibernate) 和 postgresql 批量插入

标签 hibernate postgresql jpa upsert batch-insert

我想用 JPA 和 Postgres 执行批量更新插入。我无法使用合并,因为我正在检查非 PK 的唯一约束上的冲突。我发现要在 postgres 中更新插入,我们现在可以使用 ON Conflict 功能。所以基本上我想在 JPA 中执行 native 查询。查询就像:

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

我将遍历对象列表并进行查询。

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

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

感谢您的宝贵时间。

最佳答案

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

关于hibernate - 使用 native 查询的 JPA(Hibernate) 和 postgresql 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910075/

相关文章:

java - Spring data jpa, native 查询,返回错误的字段类型

spring - @Transactional Annotation + 用于在循环中插入数据

ruby-on-rails - 无法连接 postgres 服务器

python - 如何覆盖模板中的 ArrayField 默认错误消息?

postgresql - 本地 postgresql 服务器和在 linux 上创建新用户

java - 如何使用 JPA 表示 Map<EntityType, Integer> 关系?

java - 具有静态集合的 Hibernate (JPA) 实体作为成员

java - hibernate 升级: Unknown service requested

mysql - 如何将一天添加到sql日期?