База данных H2, созданная с помощью spring-boot-starter-data-jpa, но не с помощью spring-boot-starter-data-jdbc - PullRequest
0 голосов
/ 05 февраля 2020

Я новенькая весной. Я пытаюсь работать с базой данных H2 и JDB C (не JPA / Hibernate).

Так же с Spring Initializr, когда я добавляю эти зависимости:

  • spring-boot-starter-web
  • spring-boot-starter-data-jpa
  • h2

и установим для этого свойства значение true: spring.h2.console.enabled=true

База данных mem:testdb создана и я могу подключиться к нему по адресу: localhost:8080/h2-console

Но когда я изменяю зависимость jpa на:

  • spring-boot-starter-data-jdbc

База данных не создан, и у меня есть это сообщение об ошибке:

Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (Help)

Поэтому я хотел бы знать, почему он не работает с JDB C, и если вы знаете решение, чтобы сделать это работа.

Я нашел две статьи в Интернете, и кажется, что они могут создать базу данных с помощью JDB C:

ОБНОВЛЕНИЕ:

Я пытался сделать то же самое дома в моем персональном компьютере, и он работает ...

Я не знаю, почему он не работает в рабочем компьютере, хотя он работает с JPA.

В журналах это отсутствуют следующие строки:

com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...

com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.

o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'

ОБНОВЛЕНИЕ2:

Я нашел решение:

Как я уже сказал, я использую Spring Initializr для bootstrap проекта. В задании p c я не смог использовать последнюю версию Spring boot (2.2.4), поэтому я выбрал 2.1.12

Версия Spring Boot

В этой версии он работает с JPA, но не с JDB C ...

Ответы [ 3 ]

1 голос
/ 05 февраля 2020

Из документации

Для автоматической настройки встроенной базы данных требуется зависимость от spring-jdb c.

spring-boot-starter-data-jpa и spring-boot-starter-data-jdb c получает spring-jdb c транзитивно через свою зависимость от spring-boot-starter-jdb c

Это означает, что для обеих этих зависимостей h2 будет автоматически настроен.

Обновление:

Для обеих конфигураций я могу получить доступ к БД с помощью http://localhost: 8080 / h2-console /

, и вы получите похожий журнал при запуске приложения весенней загрузки

2020-02-05 01:27:16.135[0;39m [32m INFO[0;39m [35m55966[0;39m [2m---[0;39m [2m[           main][0;39m [36mo.s.b.a.h2.H2ConsoleAutoConfiguration   [0;39m [2m:[0;39m H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:testdb'
0 голосов
/ 06 февраля 2020

Я нашел решение:

Как я уже сказал, я использую Spring Initializr для bootstrap проекта. В задании p c я не смог использовать последнюю версию Spring boot (2.2.4), поэтому я выбрал 2.1.12

Версия Spring Boot

С этой версией , работает с JPA, но не с JDB C ...

0 голосов
/ 05 февраля 2020

Обе ссылки, предоставленные вами, позволяют мне создать приложение для весенней загрузки со следующими зависимостями: Web, JDB C, H2, DevTools. Если изменить зависимость «spring-boot-starter-jdb c» на «spring-boot-starter-data-jpa», все работает так же, например, база данных H2 создана и доступна. Убедитесь, что вы указали одну и ту же конфигурацию в обоих случаях в файле application.properties, 'spring.datasource.url' не был изменен.

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