1. 程式人生 > >SpringBoot使用Oracle報“java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正確結束解決”方法

SpringBoot使用Oracle報“java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正確結束解決”方法

今天在練習SpringBoot專案的時候,使用了Oracle資料庫,出現了以下異常

018-10-22 10:31:01.074  WARN 17568 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 933, SQLState: 42000
2018-10-22 10:31:01.074 ERROR 17568 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-00933: SQL 命令未正確結束

2018-10-22 10:31:01.186 ERROR 17568 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause

java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正確結束

顯示是SQL命令未正確結束,但是這SQL命令是JPA框架自己完成的,怎麼會這樣呢? 後來查閱一些資料才知道,原來JPA預設情況下使用的資料庫方言是SQLServer語法,所以使用Oracle時就會報該錯誤。解決方法就是在application.properties檔案中新增Oracle的資料庫方言

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

使用JPA進行分頁的時候也見過報這個錯誤,也是方言問題,使用上面一句配置都可以解決了!