SpringBoot使用Oracle报“java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束”解决方法

版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/q1406689423/article/details/83269467

今天在练习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进行分页的时候也见过报这个错误,也是方言问题,使用上面一句配置都可以解决了!

猜你喜欢

转载自blog.csdn.net/q1406689423/article/details/83269467