通过读取.sql文件并通过hibernate执行,我遇到了生成查询的问题。
生成错误的步骤:读取.sql文件。 - >并创建hibernate的SQLQuery对象。 - >执行查询。假设存在hibernate会话,请遵循此片段。我使用hibernate 4.2.0.1.Final和Spring的3.2.1.RELEASE版本。
// optimization.sql is having 1500 lines of Indexes script...
private static String resource = "/com/iqx/storage/queries/optimization.sql";
InputStream is = ExcelResourceReader.class.getResourceAsStream(resource);
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
while ((str = bf.readLine()) != null) {
sb.append(str + "\n");
}
bf.close();
SQLQuery query = session.createSQLQuery(sb.toString());
query.executeUpdate();
这只是“optimization.sql”上的一个索引示例。文件中有大约100个索引
IF EXISTS (SELECT name FROM SYS.INDEXES WHERE NAME = N'QBI_TIDX')
DROP INDEX [QBI_TIDX] ON [ABSTRACT_TABLE]
GO
CREATE NONCLUSTERED INDEX [QBI_TIDX] ON [ABSTRACT_TABLE]
(
[QUOTE_FK] ASC,
[ID] ASC
)
INCLUDE ( [VERSION],
[DESCRIPTION]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO
错误:“12:04:10.996 [main] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL错误:102,SQLState:S0001 12:04:10.996 [main] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - 'GO'附近的语法不正确。“
但是当我使用SQLServer Studio运行生成的输出(Stringbuffer)时,它并没有给我这个问题。
如果有人有想法,请指导。提前谢谢。