Я хочу добавить Hibernate Search в свой проект, я пишу пример кода, чтобы проверить его.Настройка поиска в спящем режиме с EntityManager
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("pu");
EntityManager em = entityManagerFactory.createEntityManager();
FullTextEntityManager fullTextSession = Search.getFullTextEntityManager(em);
em.getTransaction().begin();
QueryBuilder builder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Place.class).get();
double centerLatitude = 0d;
double centerLongitude = 0d;
org.apache.lucene.search.Query luceneQuery = builder
.spatial()
.within(100, Unit.KM)
.ofLatitude(centerLatitude)
.andLongitude(centerLongitude)
.createQuery();
javax.persistence.Query jpaQuery =
fullTextSession.createFullTextQuery(luceneQuery, Place.class);
List result = jpaQuery.getResultList();
em.getTransaction().commit();
em.close();
И я получаю исключение, как это.
javax.persistence.PersistenceException: No Persistence provider for EntityManager named pu
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
pl.project.repository.place.CustomPlaceRepositoryImpl.findAll(CustomPlaceRepositoryImpl.java:24)
pl.project.service.place.PlaceServiceImpl.findNearest(PlaceServiceImpl.java:157)
pl.project.webapp.HomeController.helloFacebook(HomeController.java:41)
Вот моя конфигурация репозитория.
@Configuration
@EnableTransactionManagement
@EnableAspectJAutoProxy(proxyTargetClass = true)
@PropertySource("classpath:jdbc.properties")
@EnableJpaRepositories(value = "pl.project")
@ComponentScan(basePackages = "pl.project.repository", includeFilters = @ComponentScan.Filter(value = Repository.class, type = FilterType.ANNOTATION))
public class RepositoryConfig {
//...
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setPersistenceUnitName("pu");
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPackagesToScan("pl.project.model");
entityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter());
entityManagerFactoryBean.setJpaProperties(jpaProperties());
entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
return entityManagerFactoryBean;
}
@Bean
public Properties jpaProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", hbm);
properties.setProperty("hibernate.enable_lazy_load_no_trans", "true");
return properties;
}
@Bean
public HibernateJpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter(); hibernateJpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQLDialect");
return hibernateJpaVendorAdapter;
}
@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
return transactionManager;
}
@Bean
public DriverManagerDataSource dataSource() {
//... driver, pass, username
return dataSource;
}
}
Я создал единицы сохранения в entityManagerFactory()
имени pu
, так почему я получаю исключение? Эта конфигурация репозитория работала до того, как я добавил поиск Hibernate.
Нужна дополнительная информация persistence.xml
? Есть способ настроить его с помощью JavaConfig?
Мои dependecies
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-orm</artifactId>
<version>5.5.3.Final</version>
</dependency>
Вы проверили, что ваш путь к классу не имеет нескольких версий спящего режима? Какие версии Hiberate Search & Core вы используете? – Naros
Я добавил свои зависимости от спящего режима в поле post –