У меня проблема с получением точного значения из базы данных Hibernate Search - PullRequest
0 голосов
/ 09 октября 2019

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

У меня есть поле, которое я ищу

@Field(name = "field", analyzer = @Analyzer(definition = "whitespaceAnalyzer"))
private String field;

и я ищу его, создавая этот запрос

queryBuilder.keyword().onField("field").matching("value").createQuery()

Но он выполняет поиск по оператору like, не равному. Я знаю, что если я напишу

@Field(name = "field", analyzer = Analyze.NO)

Это будет работать, но я хочу разрешить@Field аннотация таким образом и поле поиска с помощью оператора равенства. Как это сделать в моем случае.

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете использовать

javax.persistence.criteria.CriteriaBuilder

    CriteriaBuilder criteriaBuilder = entityDAO.getCriteriaBuilder();
    CriteriaQuery<?> criteriaQuery = criteriaBuilder.createQuery(Field_className.class);

    Root<Field_className> entity = criteriaQuery.from(Field_className.class);
    criteriaQuery.where(criteriaBuilder.equal(entity.get("field"),identifier));
    Field_className = (Field_className)entityDAO.createQuery(criteriaQuery).getSingleResult();

Обратите внимание, замените Field_className именем вашего классаName

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