У меня есть простой проект Spring Boot с JPA, Web и PostgreSQL. Я использую последнюю версию Spring Boot 2.1.3.ВЫПУСК.
После добавления простого приложения JpaRepository происходит сбой при запуске со следующей ошибкой:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field dataMappingRepository in com.my.example.service.impl.SimpleServiceImpl required a bean named 'entityManagerFactory' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
У меня есть простой класс @Service, например:
public class SimpleServiceImpl implements SimpleService {
@Autowired private SimpleJpaRepository repo;
}
И JpaRepository:
public interface SimpleJpaRepository extends JpaRepository<SimpleEntity, Long> {}
А вот мой application.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/simple
username: user
password: pass
driver-class-name: org.postgresql.Driver
jpa:
show-sql: false
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: validate
Если я изменю весна-загрузка-стартер-родитель на 2.0.8.ВЫПУСК, приложение запустится правильно.
Можете ли вы показать свой pom.xml?
Вы включили @ComponentScan




Итак, наконец, проблема была, как сказал Энди Уилкинсон, с кэшированной зависимостью Hibernate.
После удаления папки org.hibernate из моего репозитория M2 и обновления проекта maven все работает правильно.
Я использую последнюю версию Spring Boot 2.1.2.RELEASE.
Но по ошибке в теге свойств я забыл удалить версию 4.3.5, как вы видите ниже, что вызывает путаницу между загруженной библиотекой.
<properties><hibernate.version>4.3.5.Final</hibernate.version></properties>
В репозитории .m2 папки org.hibernate я скачал обе библиотеки версий.
Удалите папку org.hibernate и обновите проект maven. Он будет работать.
Похоже, Hibernate не был настроен автоматически. Spring Boot 2.0.8 и 2.1.3 используют разные версии Hibernate (5.2.17.Final и 5.3.7.Final соответственно), и возможно, что один из jar-файлов для 5.3.7.Final был поврежден при загрузке. Попробуйте удалить Hibernate из кеша вашей системы сборки и заново собрать приложение.