Java 弹簧靴&x2B;JPA&x2B;冬眠+;Oracle在应用程序启动期间不会自动创建表,并且日志中未报告任何错误

Java 弹簧靴&x2B;JPA&x2B;冬眠+;Oracle在应用程序启动期间不会自动创建表,并且日志中未报告任何错误,java,oracle,hibernate,spring-boot,jpa,Java,Oracle,Hibernate,Spring Boot,Jpa,我正在使用Oracle db作为数据存储构建springboot应用程序。我的应用程序在h2 inmemory数据库中运行良好,但一旦我将其定向到Oracle DB,它就无法按预期工作。表不是在Oracle DB中创建的,但我可以看到sql查询在应用程序启动期间正确地打印在控制台上 我尝试了所有可能的属性spring.jpa.hibernate.ddl-auto 而且它们都不创建任何表 我使用的是Springboot+JPA+Hibernate+Oracle数据库。在这里(pom.xml),我已

我正在使用Oracle db作为数据存储构建springboot应用程序。我的应用程序在h2 inmemory数据库中运行良好,但一旦我将其定向到Oracle DB,它就无法按预期工作。表不是在Oracle DB中创建的,但我可以看到sql查询在应用程序启动期间正确地打印在控制台上

我尝试了所有可能的属性spring.jpa.hibernate.ddl-auto 而且它们都不创建任何表

我使用的是Springboot+JPA+Hibernate+Oracle数据库。在这里(pom.xml),我已经注释掉了h2引用并添加了OracleJDBC驱动程序

<!--  dependency>            
    <groupId>com.h2database</groupId>            
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency-->
<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>
下面是一个示例应用程序启动输出-

[INFO ] 2019-01-03 15:54:19.733 [main] RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
[INFO ] 2019-01-03 15:54:19.782 [main] RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 41ms. Found 1 repository interfaces.
[INFO ] 2019-01-03 15:54:20.019 [main] PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$bc3dc584] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO ] 2019-01-03 15:54:20.261 [main] TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
[INFO ] 2019-01-03 15:54:20.364 [main] ContextLoader - Root WebApplicationContext: initialization completed in 1008 ms
[INFO ] 2019-01-03 15:54:20.387 [main] ServletRegistrationBean - Servlet dispatcherServlet mapped to [/]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'characterEncodingFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'formContentFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'requestContextFilter' to: [/*]
Hibernate: drop table request cascade constraints
Hibernate: drop sequence hibernate_sequence
Hibernate: create sequence hibernate_sequence start with 1 increment by  1
Hibernate: create table request (id number(19,0) not null, creation timestamp, modification timestamp, request_data varchar2(32767), request_type varchar2(255 char), service_name varchar2(255), system_name varchar2(255), primary key (id))
[INFO ] 2019-01-03 15:54:28.276 [main] LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default'
[INFO ] 2019-01-03 15:54:28.642 [main] ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
[WARN ] 2019-01-03 15:54:28.670 [main] JpaBaseConfiguration$JpaWebConfiguration$JpaWebMvcConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
[INFO ] 2019-01-03 15:54:28.820 [main] TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''

应用程序启动会打印sql查询,但实际上它们都不会在数据库上执行。

您应该传递
spring.jpa.properties.hibernate.dialen=org.hibernate.dialen.oracle10galent

比您的
spring.jpa.database platform=org.hibernate.dialent.oracle10galent

然而,关于Oracle DBs,我不太确定,它在Mysql上对我有效。这不应该依赖于基础DB,IMO


有关Spring属性的更多选项,请查看
Spring.jpa.Properties.hibernate.dialogue=org.hibernate.dialogue.Oracle10gDialogue

比您的
spring.jpa.database platform=org.hibernate.dialent.oracle10galent

然而,关于Oracle DBs,我不太确定,它在Mysql上对我有效。这不应该依赖于基础DB,IMO


有关Spring属性的更多选项,请查看

我可以解决此问题。我直接在oracle db上运行生成的sql,发现列长度有问题。我修改了值并构建了我的项目,我可以看到在数据库中创建的表


spring boot应用程序还有一个问题,表是在应用程序构建期间创建的,而不是在应用程序启动期间创建的。我将在论坛上发布另一个问题,以获得关于这个问题的帮助+我面临的更多问题

我可以解决这个问题。我直接在oracle db上运行生成的sql,发现列长度有问题。我修改了值并构建了我的项目,我可以看到在数据库中创建的表


spring boot应用程序还有一个问题,表是在应用程序构建期间创建的,而不是在应用程序启动期间创建的。我将在论坛上发布另一个问题,以获得关于这个问题的帮助+我面临的更多问题

根据您的建议,我将方言属性名称更改为spring.jpa.properties.hibernate.dialogue,但仍然没有创建表。url的最后一部分是什么??参考此链接,也可能会有所帮助,请参见上面URL页面中的示例3-1,使用非XE客户端安装行指定数据库URL。另外,请参见此答案,“test”是一个数据库SID。在上面的链接中,示例3-1解释了如何通过数据库服务名称而不是SID使用非XE客户端进行连接。此“dbc:oracle:thin:@somehost:1521:test”url用于连接到SID是正确的。根据您的建议,我将方言属性名称更改为spring.jpa.properties.hibernate.dial,但仍然没有创建表。url的最后一部分是什么“test”??参考此链接,也可能会有所帮助,请参见上面URL页面中的示例3-1,使用非XE客户端安装行指定数据库URL。另外,请参见此答案,“test”是一个数据库SID。在上面的链接中,示例3-1解释了如何通过数据库服务名称而不是SID使用非XE客户端进行连接。此“dbc:oracle:thin:@somehost:1521:test”url对于连接到SID是正确的。
[INFO ] 2019-01-03 15:54:19.733 [main] RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode.
[INFO ] 2019-01-03 15:54:19.782 [main] RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 41ms. Found 1 repository interfaces.
[INFO ] 2019-01-03 15:54:20.019 [main] PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$bc3dc584] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[INFO ] 2019-01-03 15:54:20.261 [main] TomcatWebServer - Tomcat initialized with port(s): 8080 (http)
[INFO ] 2019-01-03 15:54:20.364 [main] ContextLoader - Root WebApplicationContext: initialization completed in 1008 ms
[INFO ] 2019-01-03 15:54:20.387 [main] ServletRegistrationBean - Servlet dispatcherServlet mapped to [/]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'characterEncodingFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'formContentFilter' to: [/*]
[INFO ] 2019-01-03 15:54:20.390 [main] FilterRegistrationBean - Mapping filter: 'requestContextFilter' to: [/*]
Hibernate: drop table request cascade constraints
Hibernate: drop sequence hibernate_sequence
Hibernate: create sequence hibernate_sequence start with 1 increment by  1
Hibernate: create table request (id number(19,0) not null, creation timestamp, modification timestamp, request_data varchar2(32767), request_type varchar2(255 char), service_name varchar2(255), system_name varchar2(255), primary key (id))
[INFO ] 2019-01-03 15:54:28.276 [main] LocalContainerEntityManagerFactoryBean - Initialized JPA EntityManagerFactory for persistence unit 'default'
[INFO ] 2019-01-03 15:54:28.642 [main] ThreadPoolTaskExecutor - Initializing ExecutorService 'applicationTaskExecutor'
[WARN ] 2019-01-03 15:54:28.670 [main] JpaBaseConfiguration$JpaWebConfiguration$JpaWebMvcConfiguration - spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
[INFO ] 2019-01-03 15:54:28.820 [main] TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''