尝试通过EntityManager使用多个CREATE VIEW语句执行脚本时出现SQL语法错误
我想在Quarkus应用程序启动时创建一组SQL视图,我写道尝试通过EntityManager使用多个CREATE VIEW语句执行脚本时出现SQL语法错误,sql,jpa,mariadb,nativequery,hibernate-native-query,Sql,Jpa,Mariadb,Nativequery,Hibernate Native Query,我想在Quarkus应用程序启动时创建一组SQL视图,我写道 @Inject EntityManager em; public void exec(... sql) { logger.info("EXECUTING " ...); sql = "BEGIN\n" + sql + "\nEND"; Query q = em.createNativeQuery(sql); q.executeUpdate()
@Inject
EntityManager em;
public void exec(... sql) {
logger.info("EXECUTING " ...);
sql = "BEGIN\n" + sql + "\nEND";
Query q = em.createNativeQuery(sql);
q.executeUpdate();
}
我的SQL文件如下所示:
CREATE OR REPLACE VIEW My_view_ex AS
SELECT cc.*, If(cc.beautifulName IS NULL, cc.name, cc.beautifulName) canonName FROM My_table cc;
CREATE OR REPLACE VIEW MyView2 AS
...
不幸的是,它抛出了一个异常,即
java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE OR REPLACE VIEW My_view_ex AS
SELECT cc.*, If(cc.beautifulName IS NU...' at line 2
如果我将sql
varible的内容复制粘贴到数据库客户端并执行它,那么它就工作了,也就是说,实际上没有语法错误。可能它不喜欢多个查询或行尾之类的东西
还有什么建议?您想要
合并(cc.beautifulName,cc.name)
?@jarlh谢谢您的提示,但这并不能解决问题:)