Как индексировать и искать тип ENUM с Hibernate-Search - PullRequest
0 голосов
/ 11 октября 2019

Я работаю в приложении Spring, Jpa, Hibernate-Search, Lucene. Я хочу проиндексировать объект JPA, который имеет свойство ENUM, и использовать Lucene для поиска по нему. Каждый элемент в моем ENUM имеет значение типа int.

Я добавил аннотацию @Field к свойству, но он не работает. В базе данных поле сохраняется как целое число.

@Field
@Enumerated
private STATUS status = STATUS.FIRST;

Теперь я хочу использовать Lucene для поиска по этому полю

//lucene query to search by that enum field 
queryStatus.should(queryBuilder.keyword().onField("status").matching(1).createQuery());

Я не могу изменить перечисление хранения на строковый типпотому что у него есть другие запросы, работающие и использующие это свойство перечисления как целое число, и я не знаю, как его проиндексировать и использовать.

1 Ответ

1 голос
/ 11 октября 2019

На самом деле мне удалось решить эту проблему, при поиске вместо использования значения int я конвертировал его в явное перечисление.

queryStatus.should(queryBuilder.keyword().onField("status").matching(MyClass.STATUS.fromValue(status)).createQuery());

Это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...