Hibernate 中未定义的过滤器参数

Undefined filter parameter in Hibernate

我正在尝试将 LocalDate 映射到 SQL 日期,但收到此错误:

java.lang.IllegalArgumentException: Undefined filter parameter [afterDateLocal]

我无法提供可重现的示例,但这是 ListingRepositoryImpl 的代码:

    if (!queries.get("checkInDate").get(0).equals("undefined")) {
        Filter afterDateFilter = session.enableFilter("afterDateFilter");

        String afterDate = queries.get("checkInDate").get(0);
        LocalDate afterDateLocal = LocalDate.parse(afterDate);

        System.out.println("After date: " + afterDateLocal);
        afterDateFilter.setParameter("afterDateLocal", afterDateLocal);
    } else {
        session.disableFilter("afterDateFilter");
    }

实体列表中定义的过滤器:

@Entity
@Table(name="listing")
@FilterDefs({
        @FilterDef(name="priceFilter", parameters=@ParamDef(name="priceComparison",type="double")),
        @FilterDef(name="beforeDateFilter", parameters=@ParamDef(name="beforeDateLocal", type="date")),
        @FilterDef(name="afterDateFilter", parameters=@ParamDef(name="afterDateLocal", type="date"))
})
@Filters({
        @Filter(name="priceFilter", condition="price <= :priceComparison"),
        @Filter(name="beforeDateFilter", condition=":beforeDateLocal <= date"),
        @Filter(name="afterDateFilter", condition=":afterDateLocal >= date")
})

我正在使用 Hibernate 5.5.7,所以我希望 LocalDate 能正常工作。

date 未在数据库中定义,这就是我收到错误的原因。

我在使用 LocalDate 创建过滤器时遇到了同样的问题(“未定义的过滤器参数日期值”),我在类型属性(类型 =“java.time.LocalDate”)上尝试了这个,它对我有用。