问题描述
使用jdbc和Oracle jdbc作为依赖项创建了一个全新的启动项目
Created a fresh boot project with just jdbc and Oracle jdbc as dependencies
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
我在application.properties文件中配置数据源,然后运行这个简单的应用程序,它在下面的stacktrace中轰炸.
I configure the datasource in the application.properties file and run this simple application and it bombs with below stacktrace.
启动ApplicationContext时出错.显示条件报告 在启用调试"的情况下重新运行您的应用程序. 2020-05-25 15:07:17.035 错误11840 --- [main] o.s.boot.SpringApplication
:应用程序运行失败
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2020-05-25 15:07:17.035 ERROR 11840 --- [ main] o.s.boot.SpringApplication
: Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: 创建在类路径中定义的名称为"jdbcConverter"的bean时出错 资源 [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration.class]: 通过方法'jdbcConverter'表示的不满意的依赖关系 参数4;嵌套的例外是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为"jdbcDialect"的bean [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套的例外是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.relational.core.dialect.Dialect]:工厂 方法'jdbcDialect'抛出异常;嵌套的例外是 org.springframework.data.jdbc.repository.config.DialectResolver $ NoDialectException: 无法确定方言 org.springframework.jdbc.core.JdbcTemplate@7fe083b1.请提供一个 方言.在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:323) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:895) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) 〜[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) 〜[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE]位于 net.sincera.dbmigration.liquibasedemo.LiquibasedemoApplication.main(LiquibasedemoApplication.java:21) [classes/:na]由以下原因引起: org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为"jdbcDialect"的bean [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration.class]: 通过工厂方法实例化Bean失败;嵌套的例外是 org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.relational.core.dialect.Dialect]:工厂 方法'jdbcDialect'抛出异常;嵌套的例外是 org.springframework.data.jdbc.repository.config.DialectResolver $ NoDialectException: 无法确定方言 org.springframework.jdbc.core.JdbcTemplate@7fe083b1.请提供一个 方言.在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0(AbstractBeanFactory.java:323) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1306) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1226) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 19个常见帧 省略的原因: org.springframework.beans.BeanInstantiationException:失败 实例化 [org.springframework.data.relational.core.dialect.Dialect]:工厂 方法'jdbcDialect'抛出异常;嵌套的例外是 org.springframework.data.jdbc.repository.config.DialectResolver $ NoDialectException: 无法确定方言 org.springframework.jdbc.core.JdbcTemplate@7fe083b1.请提供一个 方言.在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 33个共同的框架 省略的原因: org.springframework.data.jdbc.repository.config.DialectResolver $ NoDialectException: 无法确定方言 org.springframework.jdbc.core.JdbcTemplate@7fe083b1.请提供一个 方言.在 org.springframework.data.jdbc.repository.config.DialectResolver.lambda $ getDialect $ 2(DialectResolver.java:76) 〜[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]在 java.util.Optional.orElseThrow(Optional.java:290)〜[na:1.8.0_241]在 org.springframework.data.jdbc.repository.config.DialectResolver.getDialect(DialectResolver.java:75) 〜[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]在 org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration.jdbcDialect(AbstractJdbcConfiguration.java:144) 〜[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE]在 org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration $$ EnhancerBySpringCGLIB $ 5730cfab.CGLIB $ jdbcDialect $ 1() 〜[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE]在 org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration $$ EnhancerBySpringCGLIB $$ 5730cfab $$ FastClassBySpringCGLIB $$ 5eb1865b.invoke() 〜[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE]在 org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) 〜[spring-core-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) 〜[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE]在 org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration $ SpringBootJdbcConfiguration $$ EnhancerBySpringCGLIB $ 5730cfab.jdbcDialect() 〜[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE]在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 〜[na:1.8.0_241]在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 〜[na:1.8.0_241]在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 〜[na:1.8.0_241]在java.lang.reflect.Method.invoke(Method.java:498) 〜[na:1.8.0_241]在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) 〜[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 34个常见帧 省略
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcConverter' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Unsatisfied dependency expressed through method 'jdbcConverter' parameter 4; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdbcDialect' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception; nested exception is org.springframework.data.jdbc.repository.config.DialectResolver$NoDialectException: Cannot determine a dialect for org.springframework.jdbc.core.JdbcTemplate@7fe083b1. Please provide a Dialect. at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:895) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.3.0.RELEASE.jar:2.3.0.RELEASE] at net.sincera.dbmigration.liquibasedemo.LiquibasedemoApplication.main(LiquibasedemoApplication.java:21) [classes/:na] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdbcDialect' defined in class path resource [org/springframework/boot/autoconfigure/data/jdbc/JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception; nested exception is org.springframework.data.jdbc.repository.config.DialectResolver$NoDialectException: Cannot determine a dialect for org.springframework.jdbc.core.JdbcTemplate@7fe083b1. Please provide a Dialect. at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1306) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1226) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 19 common frames omitted Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.relational.core.dialect.Dialect]: Factory method 'jdbcDialect' threw exception; nested exception is org.springframework.data.jdbc.repository.config.DialectResolver$NoDialectException: Cannot determine a dialect for org.springframework.jdbc.core.JdbcTemplate@7fe083b1. Please provide a Dialect. at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 33 common frames omitted Caused by: org.springframework.data.jdbc.repository.config.DialectResolver$NoDialectException: Cannot determine a dialect for org.springframework.jdbc.core.JdbcTemplate@7fe083b1. Please provide a Dialect. at org.springframework.data.jdbc.repository.config.DialectResolver.lambda$getDialect$2(DialectResolver.java:76) ~[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE] at java.util.Optional.orElseThrow(Optional.java:290) ~[na:1.8.0_241] at org.springframework.data.jdbc.repository.config.DialectResolver.getDialect(DialectResolver.java:75) ~[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE] at org.springframework.data.jdbc.repository.config.AbstractJdbcConfiguration.jdbcDialect(AbstractJdbcConfiguration.java:144) ~[spring-data-jdbc-2.0.0.RELEASE.jar:2.0.0.RELEASE] at org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration$$EnhancerBySpringCGLIB$$5730cfab.CGLIB$jdbcDialect$1() ~[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration$$EnhancerBySpringCGLIB$$5730cfab$$FastClassBySpringCGLIB$$5eb1865b.invoke() ~[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE] at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) ~[spring-core-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-5.2.6.RELEASE.jar:5.2.6.RELEASE] at org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration$SpringBootJdbcConfiguration$$EnhancerBySpringCGLIB$$5730cfab.jdbcDialect() ~[spring-boot-autoconfigure-2.3.0.RELEASE.jar:2.3.0.RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_241] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_241] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_241] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_241] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.2.6.RELEASE.jar:5.2.6.RELEASE] ... 34 common frames omitted
如果我使用Spring Boot 2.2.7.RELEASE运行上面的代码,它就可以正常工作-没有异常!!
If I run the above code using spring boot 2.2.7.RELEASE, it works just fine -- No exceptions!!
2天后,我想到了在localhost上配置mysql数据源.相同的程序运行正常(使用spring boot 2.3.0.RELEASE),但这一次它使用了mysql数据源.
After 2 days, I thought of configuring a mysql datasource on localhost. The same program runs just fine (with spring boot 2.3.0.RELEASE) but this time it used the mysql datasource.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
spring boot 2.3.0.RELEASE中的oracle jdbc驱动程序发生了什么?
What is happening with the oracle jdbc driver in spring boot 2.3.0.RELEASE ?
在Spring Boot 2.3.0.RELEASE中mysql jdbc驱动程序能正确执行什么操作?
What is mysql jdbc driver doing correctly in spring boot 2.3.0.RELEASE ?
谢谢.
推荐答案
JDBC驱动程序运行良好.
The JDBC Driver is doing just fine.
您已经在评论中了解到问题是
As you already learned in the comments the problem is that
a)Spring Data JDBC现在每个数据库都需要一个Dialect
a) Spring Data JDBC now requires a Dialect
for each database
b)对于Oracle,Spring Data JDBC不附带Dialect
.
b) Spring Data JDBC does not ship with a Dialect
for Oracle.
如无法识别Spring Data JDBC Firebird方言所述,并且在 https://spring.io/博客/2020/05/20/migrating-to-spring-data-jdbc-2-0 您需要立即提供自己的Dialect
实现.
As described in Spring Data JDBC Firebird dialect not recognized and in https://spring.io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0you need to provide your own Dialect
implementation right now.
类似的事情应该起作用:
Something like this should work:
class MyOracleDialect extends AnsiDialect {
private static final LimitClause LIMIT_CLAUSE = new LimitClause() {
@Override
public String getLimit(long limit) {
return String.format("FETCH NEXT %d ROWS ONLY", limit);
}
@Override
public String getOffset(long offset) {
return String.format("OFFSET %d ROWS", offset);
}
@Override
public String getLimitOffset(long limit, long offset) {
return String.format("OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset, limit);
}
@Override
public Position getClausePosition() {
return Position.AFTER_ORDER_BY;
}
};
@Override
public LimitClause limit() {
return LIMIT_CLAUSE;
}
}
然后,您需要按照引用的Stackoverflow问题中所述通过DialectProvider
使Dialect
可用:
You then need to make the Dialect
available via a DialectProvider
as described in the referenced Stackoverflow question:
到目前为止,Spring Data团队尚未对Oracle数据库进行集成测试.这是因为在相当长的一段时间内,尚不清楚如何以合法方式执行此操作,因为包括构建基础结构在内的所有代码都是开源的,并且Oracle要求接受各种东西才能使用数据库实例或其驱动程序.
So far the Spring Data team does not run their integration tests with an Oracle database.This is because for quite some time it was unclear how to do that in a legal way since all the code including the build infrastructure was open source and Oracle required accepting of all kinds of stuff to use a database instance or their driver.
现在,可以使用Docker映像进行测试了,可以从Maven Central获得JDBC驱动程序.仍然有些棘手,因为据我所知,当前用于docker映像的选项使您可以在多个GB的映像大小或大约15分钟的启动时间之间进行选择.
By now Docker images are available for testing and the JDBC driver is available from Maven Central. It is still a little tricky since the current options for docker images that I am aware of let you choose between an image size of many GBs or a start up time of about 15 minutes.
无论如何,都有一个社区成员在解决此问题: https://jira.spring.io /browse/DATAJDBC-256
Anyway there is a community member working on the issue: https://jira.spring.io/browse/DATAJDBC-256
因此,我有信心在不久的将来我们将能够完全支持Oracle.
I'm therefore confident that we will be able to fully support Oracle in the near future.
这篇关于春季启动2.3.0.RELEASE中的新错误:Oracle 12.2.0.1 jdbcdriver出现UnsatisfiedDependencyException,但mysql jdbcdriver却没有的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!