mysql - EJBQL/HQL 命名参数列表

标签 mysql hibernate orm jpa hql

我正在尝试在 MySQL+JBoss+Hibernate 应用程序中执行一个很长的 'INSERT ON DUPLICATE KEY UPDATE',最多有几千行。它看起来像:

INSERT INTO Table (field1, field2, field3) VALUES
(value1_1, value2_1, value3_1),
(value1_2, value2_2, value3_2),
(value1_3, value2_3, value3_3),
...
ON DUPLICATE KEY UPDATE ...

这作为 native 查询工作正常,我在循环中构建查询字符串,但长查询字符串本身保留在 Hibernate 查询计划缓存中并占用大量堆空间。所以我想知道是否可以参数化此查询,以便它只在查询计划缓存中存储一​​次。

有没有办法像这样参数化元组列表?理想情况下,我可以在 setParameter() 中传入一组 { value1, value2, value3 } 集合。使用 (:value1, :value2, :value3) 运行数以千计的单行更新非常容易,但这会带来显着的(2-3 倍)性能成本。

提前致谢。

最佳答案

看看Hibernate batch inserts文档部分。

关于mysql - EJBQL/HQL 命名参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134351/

相关文章:

MYSQL ExtractValue 从 XML 返回大空白

php - 返回并添加到数据库

java - Hibernate 序列生成非连续值

java - entityManager.createQuery() 上的 AbstractMethodError

mysql - rails 数据库 :create collation error

Mysql查询按最后一条记录和第一条记录分组

java - Spring 数据 JPA( hibernate ): How do I retrieve a concrete entity using only a field in its abstract superclass?

java - hibernate 中 @EmbeddedId 内的级联

java - 如果我修改一个 Hibernate 实体,在保存之后,当我提交时,更改将保存到数据库中

inheritance - GORM 关系中的抽象类