如何在 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 调用 Postgres 函数 Void 返回 MappingException:
Spring JPA/Hibernate Repository findAll 在 Kotlin 中默认执行 N+1 个请求而不是 JOIN