gpt4 book ai didi

java - 从 jpa-hibernate ddl auto 运行 sql 脚本

转载 作者:行者123 更新时间:2023-11-30 10:26:57 32 4
gpt4 key购买 nike

在 SO 中找不到解决方案,所以我试图找出如何在这里实现目标。我有一个 SqlServer 2014 数据库,它接受并运行良好的脚本(它做了很多事情,主要检查是否存在程序,然后删除,构建它们,运行它们并删除它们......)。

例如这个简单的语句:

SET NOCOUNT ON;

IF OBJECT_ID ( 'InitializeProc', 'P' ) IS NOT NULL
DROP PROCEDURE InitializeProc ;
GO

给我:

HHH000388: Unsuccessful: IF OBJECT_ID ( 'InitializeProc', 'P' ) IS NOT NULL ERROR [org.hibernate.tool.hbm2ddl.SchemaExport] (ServerService Thread Pool -- 267) Incorrect syntax near 'NULL'.

我尝试在 persistence.xml 中声明的创建 ddl-auto 阶段运行我的脚本,并且 Hibernate 声明中的 sql 驱动程序是“SQLServer2012Dialect”。

我在 Java 1.8 - Jboss 7 EAP 和 jpa 2.1 环境中。我已经用“CRLF”替换了行尾“LF”。由于脚本很长,我试图找出这个问题,希望这可能是解决整个案例的关键。

我知道我可以简单地调用 Drop,但首先是丑陋的,其次我在其他场合发现了同样的问题,例如“AS”、“GO”……等等。

谢谢!

编辑:如果我将所有语句放在一行中就可以了。但是强制开发人员这样做真的很丑陋。在 persistence.xml 中也试过这个:

<property name="hibernate.hbm2ddl.import_files_sql_extractor" value="org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor" />

...但是:

Caused by: org.hibernate.hql.internal.antlr.SqlStatementParser$StatementParserException: line 1:129956: expecting STMT_END, found 'null'

不敢相信这么简单的事情不可能轻易完成。必须有办法。

最佳答案

很抱歉发布了 necroposting,但我在 MultipleLinesSqlCommandExtractor 中遇到了同样的错误(期待 STMT_END,发现“null”)并找到了解决它的方法 - 最后一条语句应该以 ; 结尾任何类型的分隔符或注释都没有异常(exception)。

似乎是 5.3.1.Final 的错误

关于java - 从 jpa-hibernate ddl auto 运行 sql 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45502771/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com