0

我在 Spring、Jpa、Hibernate-Search、Lucene 应用程序中工作。我想索引一个具有 ENUM 属性的 JPA 实体并使用 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());

我无法将枚举存储更改为字符串类型,因为它有其他查询正在工作并将此枚举属性用作整数,我不知道如何索引和使用它。

4

1 回答 1

1

实际上我能够解决这个问题,在搜索而不是使用 int 值时,我将其转换为显式枚举。

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

这解决了我的问题。

于 2019-10-11T03:29:26.817 回答