Hibernate 搜索 - 匹配空日期字段

Hibernate search - match null date field

我想执行查询以获取 endDate 为 null 的实体,为此我使用 indexNullAs,因为 null 值未编入索引

@Field(analyze = Analyze.NO, indexNullAs = Field.DEFAULT_NULL_TOKEN)
@DateBridge(resolution = Resolution.DAY)
private Date endDate;

但我有以下错误

HSEARCH000325: The 'indexNullAs' property for field 'endDate', with value 'null', has invalid format: HSEARCH000293: The 'indexNullAs' property for fields indexed as Longs must represent a Long number. Could not parse 'null'.

错误的意思差不多。在内部,日期被索引为 long 数字,因此您的空标记也必须是 long

只需选择一个不会与有效日期表示冲突的 long 值,例如 9223372036854775807(最大 long 值)。

或者,如果您的项目(还)不是太大,您也可以迁移到 Hibernate Search 6 (in beta, but well tested and approaching the final release). Among many improvements, Hibernate Search 6 has an exists predicate,从而不需要“空令牌”。