У меня есть модель ниже, и я пытаюсь использовать Hibernate Search для полнотекстового поиска.Запросить список IndexedEmbedded перечисления (enum) с помощью Hibernate Search
Мне нужно найти в поле «about» для всех пользователей с ролью UserRole.PROFESSIONIST.
Это модель:
@Entity
@Indexed
public class User
{
@Id
@GeneratedValue
Long id;
...
String about;
@IndexedEmbedded
@Enumerated(EnumType.STRING)
@ElementCollection(targetClass = UserRole.class, fetch = FetchType.EAGER)
@JoinTable(name = "user_roles", joinColumns = {@JoinColumn(name = "user_id")})
List<UserRole> roles = new ArrayList<>();
}
Это запрос:
List results = new ArrayList<>();
org.apache.lucene.search.Query containText = queryBuilder
.keyword()
.onField("about")
.matching(text)
.createQuery();
org.apache.lucene.search.Query isProfessionist = queryBuilder
.keyword()
.onFields("roles")
.matching(UserRole.PROFESSIONIST.toString())
.createQuery();
org.apache.lucene.search.Query query = queryBuilder
.bool()
.must(containText)
.must(isProfessionist)
.createQuery();
org.hibernate.search.jpa.FullTextQuery jpaQuery = fullTextEntityManager.createFullTextQuery(query, User.class);
results = jpaQuery.getResultList();
Когда я выполнить запрос, я получаю эту ошибку:
org.hibernate.search.exception.SearchException: Unable to find field roles in com.plusimple.core.models.User
Это то, что я пытаясь сделать это? И если да, что я делаю неправильно?
Он работал. Спасибо! –
Хорошо, я открыл https://hibernate.atlassian.net/browse/HSEARCH-1971, чтобы улучшить это. Благодаря! – Sanne