JPA(Hibernate)和PostgreSQL使用NativeQuery进行批量Upsert

8

我希望使用JPA和Postgres进行批量upsert。因为我正在检查不是PK的唯一约束冲突,所以无法使用merge。我发现在postgres中可以使用ON Conflict功能来upsert。所以基本上我想在JPA中执行原生查询。查询将类似于:

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

我将循环遍历对象列表并进行查询。
因此,我的问题是,在本地查询插入的情况下,我们是否可以使用手动刷新em.flush()。它适用于批量插入吗?
如果不行,那么有人可以告诉我如何解决这个问题吗?
感谢您的时间。
1个回答

0

在Hibernate JPA中使用本地查询与普通的Hibernate查询相同,只是它特定于底层数据存储。您可以进行批量插入更新并根据批量大小手动刷新,没有任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接