Spring boot + JPA + Hibernate + Oracle не создает таблицы автоматически при запуске приложения, и в журнале не сообщается об ошибках - PullRequest
0 голосов
/ 03 января 2019

Я создаю приложение Springboot с Oracle db в качестве хранилища данных. Мое приложение отлично работает с базой данных h2-памяти, но как только я нацеливаю его на базу данных Oracle, оно не работает должным образом. Таблицы не создаются в БД Oracle, но я вижу, что 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 / пользователе / ​​пароле / драйвере и диалекте.

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-запрос, но на самом деле ни один из них не выполняется в базе данных.

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я мог бы решить эту проблему.Я запустил сгенерированный sql непосредственно на oracle db и обнаружил, что есть проблема с длиной столбца.Я изменил значение и собрал свой проект, и я увидел, что таблица создана в базе данных.

Есть еще одна проблема с приложением весенней загрузки: таблица создается во время сборки приложения, а не во время приложенияНачните.Я опубликую еще один вопрос на форуме, чтобы получить помощь по этому вопросу + еще несколько проблем, с которыми я сталкиваюсь.

0 голосов
/ 03 января 2019

Вы должны сдать spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

чем ваш spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect

Тем не менее, я не уверен в этом насчет БД Oracle, у меня это сработало на Mysql. Это не должно зависеть от базовой БД, ИМО.

Дополнительные параметры Spring Properties см. По ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...