Поиск в спящем режиме: "Невозможно построить запрос для типа xyzEntityA, который не проиндексирован и не имеет индексированных подтипов"
У меня есть пробный код для проверки поиска в спящем режиме. Когда я запустил код, он дал мне следующую ошибку:
Exception in thread "main" org.hibernate.search.exception.SearchException: HSEARCH000278: Can't build query for type x.y.z.A.EntityA' which is neither indexed nor has any indexed sub-types.
at org.hibernate.search.query.dsl.impl.ConnectedQueryContextBuilder$HSearchEntityContext.<init>(ConnectedQueryContextBuilder.java:51)
at org.hibernate.search.query.dsl.impl.ConnectedQueryContextBuilder.forEntity(ConnectedQueryContextBuilder.java:37)
at x.y.z.A.maventTest.testHibernateSearch2(maventTest.java:36)
at x.y.z.A.maventTest.main(maventTest.java:18)
Ниже приведен мой файл конфигурации Hibernate:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">....</property>
<property name="connection.username">....</property>
<property name="connection.password">....</property>
<property name="connection.pool_size">...</property>
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>
<property name="hibernate.search.default.directory_provider">filesystem</property>
<property name="hibernate.search.default.indexBase">.....</property>
<property name="hibernate.search.default.exclusive_index_use">true</property>
<mapping class="x.y.z.EntityA" />
</session-factory>
</hibernate-configuration>
EntityA - это объект, который уже был проиндексирован с помощью другого приложения поиска hibernate. В этом макете приложение индексируется как:
@Entity
@Indexed
public class EntityA {...}
Ниже приведены зависимости maven, которые я использую:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.hynnet</groupId>
<artifactId>oracle-driver-ojdbc6</artifactId>
<version>12.1.0.1</version>
</dependency>
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>5.5.5.Final</version>
</dependency>
</dependencies>
Я получаю fullTextSession с:
public static FullTextSession getFullTextSession() {
if (sessionFactory == null)
configureSessionFactory();
return Search.getFullTextSession(getSession());
}
private static SessionFactory configureSessionFactory()
throws HibernateException {
Configuration configuration = new Configuration();
configuration.configure("hibernate-search.cfg.xml");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
Из трассировки стека ясно сказано, что сущность не проиндексирована. Но он уже проиндексирован в файловой системе, и я правильно указал местоположение индекса.
Любая помощь будет оценена. Заранее спасибо.