【发布时间】:2019-05-29 22:51:19
【问题描述】:
我正在使用 Oracle db 作为数据存储构建 springboot 应用程序。我的应用程序在 h2 inmemory 数据库中运行良好,但一旦我将其定位到 Oracle DB,它就无法按预期工作。表不是在 Oracle DB 中创建的,但我可以看到在应用程序启动期间在控制台上正确打印了 sql 查询。
我尝试了属性 spring.jpa.hibernate.ddl-auto 的所有可能性 并且它们都没有创建任何表。
我正在使用 Springboot + JPA + Hibernate + Oracle 数据库。这里(pom.xml)我已经注释掉了h2引用并添加了Oracle JDBC驱动。
<!-- 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>
我的 application.properties 被修改为包含 url/user/password/driver 信息和方言信息。
spring.jpa.show-sql=true
spring.h2.console.enabled=true
#Using SID
spring.datasource.url= jdbc:oracle:thin:@somehost:1521:test
spring.datasource.username=test
spring.datasource.password=test
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#hibernate configs
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.hibernate.ddl-auto=create
这是一个示例应用程序启动输出 -
[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 查询,但实际上没有一个在数据库上执行。
【问题讨论】:
标签: java oracle hibernate spring-boot jpa