Я изучал множество вопросов и ответов в StackOverflow, но ни один из них не решил мою проблему или не соответствует моему случаю. Например, следующие вопросы.
В чем проблема, я работаю над SpringBoot v2.2.5.RELEASE и MariaDB. Я добавил spring-boot-devtools в pom, как показано ниже.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
Моя конфигурация источника данных в application.properties, как показано ниже
spring.jpa.generate-ddl=false
spring.jpa.hibernate.ddl-auto = validate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=jdbc:mysql://xxx.xxx.xxx.xxx/db_name_here?useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
Я запускаю приложение с помощью следующей команды через командную строку
mvn spring-boot:run
, как и ожидалось, при изменении файлов в пути к классам, приложения, использующие этот spring-boot-devtools, вызывают перезапуск приложения. После перезапуска приложения, если я пытаюсь выполнить повторную регистрацию в приложении, я получаю следующую ошибку:
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.IllegalStateException
: EntityManagerFactory is closed
// truncated
Caused by: java.lang.IllegalStateException: EntityManagerFactory is closed
at org.hibernate.internal.SessionFactoryImpl.validateNotClosed(SessionFactoryImpl.java:507) ~[hibernate-core-5.4.12.Final.jar:5.4.12.Final]
Только после остановки процесса с помощью CTRL + C и повторного запуска команды, приложение работает без проблем с менеджером сущностей. Пожалуйста, совет.