如何在 JPA/Hibernate 中执行本机 SQL 脚本?

Posted

技术标签:

【中文标题】如何在 JPA/Hibernate 中执行本机 SQL 脚本?【英文标题】:How can I execute a native SQL script in JPA/Hibernate? 【发布时间】:2012-12-30 18:32:55 【问题描述】:

我有一个带有数据库转储的 SQL 脚本。如何使用 Hibernate 的 EntityManager 执行它?

我是这样尝试的:

EntityManager manager = getEntityManager(); 
Query q = manager.createNativeQuery(sqlScript);
q.executeUpdate();

但它仅在 sqlScript 包含单个 SQL 查询时才有效,而我需要运行多个插入和其他复杂的东西。

关系数据库管理系统: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64 位生产

【问题讨论】:

什么是getEntityManager();??? 【参考方案1】:

使用 begin end 块包装您的查询。喜欢

EntityManager manager = getEntityManager(); 
Query q = manager.createNativeQuery("BEGIN " + sqlScript + " END;");
q.executeUpdate();

【讨论】:

我收到了You have an error in your SQL syntax 的 EclipseLink 2.6 和 mysql Oracle 的这个答案。省略分号,它可能适用于 MySql。

以上是关于如何在 JPA/Hibernate 中执行本机 SQL 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

从 JPA/Hibernate 中的视图加载实体

Jpa , Hibernate 选择查询优化

在 JPA/Hibernate 中正确使用 flush()

JPA Hibernate 调用 Postgres 函数 Void 返回 MappingException:

Spring JPA/Hibernate Repository findAll 在 Kotlin 中默认执行 N+1 个请求而不是 JOIN

如何使用 JPA 和 Hibernate 在 UTC 时区中存储日期/时间和时间戳