java - hibernate搜索中的OnFields方法接受什么数据类型

标签 java hibernate spring-boot hibernate-search

我希望能够使用 hibernate 搜索来仅搜索用户在表单中选择的字段。

例如,如果用户选择按名字搜索,hibernate 应该只考虑名字。如果用户选择名字和姓氏,hibernate 应该考虑名字和姓氏。

 FullTextEntityManager fullTextEntityManager =
                org.hibernate.search.jpa.Search.
                        getFullTextEntityManager(entityManager);

        QueryBuilder queryBuilder =
                fullTextEntityManager.getSearchFactory()
                        .buildQueryBuilder().forEntity(Client.class).get();

        org.apache.lucene.search.Query query =
                queryBuilder
                        .keyword()
                        .wildcard()
                        // i want below section (fields) to change based on user input but can't do it with list<string> or collection
                        .onFields("idNumber", "firstName", "middleName","lastName","nationality")
                        .matching("*"+searchText.toLowerCase()+"*")
                        .createQuery();

最佳答案

使用List.toArray:

List<String> fieldsSelectedByUser = ...;
 FullTextEntityManager fullTextEntityManager =
                org.hibernate.search.jpa.Search.
                        getFullTextEntityManager(entityManager);

        QueryBuilder queryBuilder =
                fullTextEntityManager.getSearchFactory()
                        .buildQueryBuilder().forEntity(Client.class).get();

        org.apache.lucene.search.Query query =
                queryBuilder
                        .keyword()
                        .wildcard()
                        .onFields(fieldsSelectedByUser.toArray(new String[0]))
                        .matching("*"+searchText.toLowerCase()+"*")
                        .createQuery();

关于java - hibernate搜索中的OnFields方法接受什么数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658246/

相关文章:

java - 并发请求的 repo 类线程安全吗? - Spring Boot

java - 将一行文本转换为 int 值

java - 如果用户未登录,则在网页上显示 "guest"

java - Spring Web Security 注销不适用于 httpBasic 身份验证

spring - JavaFX + Spring(JDBC 和@SpringBootApplication 和@Autowired 和@Transactional)

java - 如何在 Jeditorpane 中动态生成对象

java - IDEA 中 sessionFactory 的 bean 中的名称属性位于 'red' 中,即无法解析属性

java - 是否可以在不迭代的情况下加载具有所有惰性属性的对象?

hibernate - 使用 Hibernate 验证,我可以查询正在验证的实体吗?

java - 带有@PathVariable的多个get请求参数