Spring boot 创建org.apache.lucene.search.Query时的NPE
我想在Hibernate搜索的帮助下,通过我的Spring Boot应用程序进行全文搜索。但是我在创建Spring boot 创建org.apache.lucene.search.Query时的NPE,spring-boot,lucene,hibernate-search,Spring Boot,Lucene,Hibernate Search,我想在Hibernate搜索的帮助下,通过我的Spring Boot应用程序进行全文搜索。但是我在创建org.apache.lucene.search.Query时遇到了这样一个问题:NPE 这是我的密码 @Repository public class HibernateSearch { @PersistenceContext private EntityManager entityManager; @Transactional public List<
org.apache.lucene.search.Query
时遇到了这样一个问题:NPE
这是我的密码
@Repository
public class HibernateSearch {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public List<Manual> fulltextSearching(String keyword){
FullTextEntityManager fullTextEntityManager =
org.hibernate.search.jpa.Search.getFullTextEntityManager(entityManager);
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(Manual.class).get();
org.apache.lucene.search.Query luceneQuery = qb
.keyword()
.onFields("name")
.matching(keyword)
.createQuery();
javax.persistence.Query jpaQuery =
fullTextEntityManager.createFullTextQuery(luceneQuery, Manual.class);
@SuppressWarnings("unchecked")
List<Manual> result = jpaQuery.getResultList();
return result;
}
}
我的实体:
@Entity
@Table(name = "manual")
@Getter
@Setter
@NoArgsConstructor
@Indexed
public class Manual {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "manual_id")
private Long id;
@NotNull
@Column(name = "manual_name")
@Field
private String name;
}
我的财产:
spring.jpa.properties.hibernate.search.default.directory_provider = filesystem
spring.jpa.properties.hibernate.search.default.indexBase = D:\\Java
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
我的Maven依赖项:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-orm</artifactId>
<version>5.7.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
org.hibernate
休眠搜索orm
5.7.1.最终版本
org.hibernate
休眠实体管理器
编辑
解决方案
原因是我将空字符串传递给全文搜索方法共享堆栈跟踪,please@EugeneUstimenko找到解决方案,谢谢
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-orm</artifactId>
<version>5.7.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>