Проблема, с которой вы столкнулись, связана с предоставленным вами классом конфигурации HibernateUtilsConfig.java
. В вашем классе EmployeeDao вы автоматически подключаете компонент sessionfactory
.Таким образом, когда springboot пытается автоматически подключить bean-компонент, происходит сбой со следующей ошибкой:
Unsatisfied dependency expressed through field 'sessionfactory'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hibernateUtilsConfig': Unsatisfied dependency expressed through field 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'getSessionFactoty': Requested bean is currently in creation: Is there an unresolvable circular reference?
, так как bean-компонент entityManagerFactory
недоступен.
Поскольку вы используете spring-boot, выможет не все настроить вручную.Вы можете использовать автоматические настройки по умолчанию из spring-boot, добавив следующую зависимость:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
, затем вы можете предоставить соответствующие ключи в application.properties или application.yml, и spring-boot настроит вседля тебя.
application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=mysqluser
spring.datasource.password=mysqlpass
spring.datasource.url=jdbc:mysql://localhost:3306myDb?createDatabaseIfNotExist=true
Если вы все еще хотите настроить все вручную, попробуйте создать компонент управления данными, например:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[] { "com.example.persistence.model" });
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
Справочник Документация .