Я пытаюсь создать индекс документа для сущности, которая имеет следующие ассоциации:
DocVersion:
@Entity
@Indexed
public class DocVersion implements Serializable {
...
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "doc_uuid")
@IndexedEmbedded
private Document2 document2;
...
}
Document2:
@Entity
@Indexed
public class Document2 implements Serializable {
...
@Column(name = "entityState")
@Enumerated(EnumType.STRING)
@Field(bridge=@FieldBridge(impl=EnumBridge.class), index=Index.YES)
private EDocState eDocState;
...
}
вот как язапросить индекс (только для целей тестирования):
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
try {
fullTextEntityManager.createIndexer().startAndWait();
} catch (InterruptedException e) {
e.printStackTrace();
}
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder()
.forEntity(DocVersion.class)
.get();
org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword()
.onField("document2.eDocState").matching("HARD_DEL")
.createQuery();
List results = fullTextEntityManager.createFullTextQuery(luceneQuery, DocVersion.class)
.getResultList();
, но вместо результатов я получаю:
WARNING: org.hibernate.search.bridge.BridgeException: Exception while calling bridge#objectToString
entity class: com.nws.vedica.model.entity.DocVersion
entity property path: document2.eDocState
field bridge: TwoWayString2FieldBridgeAdaptor [stringBridge=org.hibernate.search.bridge.builtin.EnumBridge@60942b8b]
Так что это значит?Нужно ли реализовать какой-то конкретный мост для перечисления (как это будет выглядеть)?Это просто значение enum, поэтому я думаю, что проблема в другом месте.
Пожалуйста, помогите мне получить результаты.
Пакет, который я использую: hibernate-search-orm: 5.9.3.