При использовании Spring boot и Spring JPA - почему я не могу получить генерацию схемы для сущностей в зависимости? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть проект Spring Boot maven, использующий spring-boot-starter-jpa, который я использовал для автоматического создания таблиц базы данных для базы данных h2 в памяти для интеграционных тестов.

Это работало отлично, пока я не реорганизовал классы @Entity в отдельный модуль maven, чтобы разрешить повторное использование в двух других проектах.

После того, как классы Entity были включены в качестве зависимости maven вместо того, чтобы находиться втот же модуль, создание таблицы больше не работает.У меня есть следующее в application.properties feil @

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.h2.console.enabled=true
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create

Spring может внедрять классы @Repository, которые являются стандартными интерфейсами CrudRepository.

Я изменил свой класс приложения, чтобы иметь:

@SpringBootApplication
@EnableJpaRepositories("com.acme.mypackage")

Где классы @Entity, содержащиеся в зависимости, находятся в пакете com.acme.mypackage.Это не сработало.

При использовании консоли h2 после запуска приложения я вижу, что таблицы для сущностей, которые возникают из зависимости, не создаются.

Как я могуполучить весеннюю загрузку для автоматического создания таблиц базы данных для классов @Entity, содержащихся в зависимости maven?

1 Ответ

1 голос
/ 24 июня 2019

Вы должны использовать @EntityScan, чтобы сообщить Spring Data JPA, что ваши сущности находятся в другом пакете:

@SpringBootApplication
@EntityScan ("com.acme.mypackage")

Официальную документацию вы найдете здесь:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-separate-entity-definitions-from-spring-configuration

@ EnableJpaRepositories с именем пакета необходимо использовать, если ваши репозитории находятся в месте, которое не ниже иерархии маршрутов, где находится ваш класс SpringBootApplication.

...