如何使用 Hibernate-Search 索引和搜索 ENUM 类型
How to index and search an ENUM type with Hibernate-Search
我正在 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());
我无法将枚举存储更改为字符串类型,因为它有其他查询在工作并将此枚举属性用作整数,我不知道如何索引和使用它。
实际上我能够解决这个问题,当搜索而不是使用 int 值时,我将它转换为显式枚举。
queryStatus.should(queryBuilder.keyword().onField("status").matching(MyClass.STATUS.fromValue(status)).createQuery());
这解决了我的问题。
我正在 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());
我无法将枚举存储更改为字符串类型,因为它有其他查询在工作并将此枚举属性用作整数,我不知道如何索引和使用它。
实际上我能够解决这个问题,当搜索而不是使用 int 值时,我将它转换为显式枚举。
queryStatus.should(queryBuilder.keyword().onField("status").matching(MyClass.STATUS.fromValue(status)).createQuery());
这解决了我的问题。