На самом деле вы все усложнили, поскольку хотите явно определить конфигурацию JPA в компоненте MYSQLConfig
.
Это означает, что вы больше не будете использовать всю автоматическую конфигурацию, предоставленную Spring Boot для концерна JPA .
Для информации, на самом деле то, что вы устанавливаете, может быть оценено application.properties/yml
, который добавит необходимые свойства в среду Spring.
Например:
spring.datasource.url=jdbc:mysql://mydb
spring.datasource.username=user
spring.datasource.password=pass
...
По поводу вашей проблемы она, вероятно, здесь:
entityManagerFactory.setPackagesToScan(
env.getProperty("entitymanager.packagesToScan"));
Похоже, что это свойство не существует в Spring Boot 2.
Вы можете сделать вашу конфигурацию более надежной, вызвав getRequiredProperty()
вместо getProperty()
, например:
entityManagerFactory.setPackagesToScan(
env.getRequiredProperty("entitymanager.packagesToScan"));
Если вам действительно нужно установить entityManagerFactory.setPackagesToScan()
программно, вы можете установить это значение как:
entityManagerFactory.setPackagesToScan(DemoApplication.getPackage().toString());
as DemoApplication
находится в корневом пакете всех возможных компонентов вашего приложения.
Или вы также можете положиться на пакет любого класса сущностей, если все сущности находятся в одном базовом пакете, например:
entityManagerFactory.setPackagesToScan(Account.getPackage().toString());
Это лучше, чем жестко заданный пакет com.springstudy.demo.model
, который может измениться в будущем:
entityManagerFactory.setPackagesToScan("com.springstudy.demo.model");