首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java JPA环境中调用CREATE MATERIALIZED VIEW语句?

如何在Java JPA环境中调用CREATE MATERIALIZED VIEW语句?
EN

Stack Overflow用户
提问于 2014-11-08 00:18:38
回答 1查看 2.1K关注 0票数 1

如何从JPA环境中调用CREATE MATERIALIZED VIEW语句?当前,该语句位于从应用程序上下文加载的文件中。我只想执行它。

我可以使用EntityManager来执行sql脚本吗?还是应该创建一条语句?

代码语言:javascript
复制
Session session = (Session) em.getDelegate();
SessionFactoryImplementor sfi = (SessionFactoryImplementor) session.getSessionFactory();
ConnectionProvider cp = sfi.getConnectionProvider();
Connection connection = cp.getConnection();
Statement statement = connection.createStatement();
statement.execute(sql);

我试过了,但只收到了一个“缺少标识符\n”。也许这是因为我的语句以新行开头,但这不应该是问题所在。例如,当使用SQL*Plus执行脚本时,脚本本身是可以工作的。

此外,我还尝试了

代码语言:javascript
复制
em.createNativeQuery(sql);

但收到"javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: not‘t extract ResultSet“。

有什么想法或例子吗?

ad:我在后面使用Oracle12c。

EN

回答 1

Stack Overflow用户

发布于 2014-11-08 19:44:26

好的,经过几个小时的深入研究,我发现了我的问题。

首先,我的sql脚本包含未转义的“(双引号),解决方案是对这些字符进行转义。

然而,最棘手的事情是我的所有sql文件都包含\uFEFF符号。称为BOM (字节顺序标记)。我的Oracle驱动程序似乎不能正确处理BOM。如上所述,这导致了\n异常。

最后,我可以调用

代码语言:javascript
复制
Query query = em.createNativeQuery(sql);
query.executeUpdate();

以创建我的物化视图。经验教训:注意sql文件中无法识别的符号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26805538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档