【发布时间】:2018-06-04 08:02:50
【问题描述】:
在我的实体中,我有两个字段:
private LocalDate startDate = LocalDate.of(1900, 1, 1);
private LocalDate endDate = LocalDate.of(3000, 1, 1);
使用 JPA Criteria API 我想选择 LocalDate.now() > startDate 和 LocalDate.now() < endDate 所在的实体。
我尝试如下:
predicates.add(builder.greaterThan(LocalDate.now(), path.<LocalDate> get(Entity_.startDate)));
predicates.add(builder.lessThan(builder.currentDate(), path.<LocalDate> get(Entity_.endDate)));
但我收到此错误:
The method greaterThan(Expression<? extends Y>, Expression<? extends Y>) in the type CriteriaBuilder is not applicable for the arguments (LocalDate, Path<LocalDate>)
我也试过了:
predicates.add(builder.between(builder.currentDate(), path.<LocalDate> get(Entity_.startDate), path.<LocalDate> get(Entity_.endDate)));
我得到以下错误:
The method between(Expression<? extends Y>, Expression<? extends Y>, Expression<? extends Y>) in the type CriteriaBuilder is not applicable for the arguments (Expression<Date>, Path<LocalDate>, Path<LocalDate>)
我该如何解决这个问题?
【问题讨论】:
-
不是 100% 确定,但您可能应该使用
greaterThan(Expression<? extends Y> x, Y y)方法,其中首先是表达式,其次是普通变量。因此,您可能需要更改参数的顺序并将LocalDate.now()作为第二个参数。lessThan方法和其他方法相同。
标签: java jpa jpa-2.1 jpa-criteria