这是我的表
所选列是我在Predicate中使用的列
我的第一个方法是
public void betweenPredicate(String attrib, LocalDate value, LocalDate value2) {
Predicate predicate = builder.between(entity.<LocalDate> get(attrib), builder.literal(value), builder.literal(value2));
predList.add(predicate);
}
但是这样一些日期丢失了,所以我改成了这个
public void betweenPredicate(String attrib, LocalDate value, LocalDate value2) {
Predicate predicate = builder.and(builder.<LocalDate>greaterThan(entity.get(attrib), value),
builder.<LocalDate>lessThan(entity.get(attrib), value2));
predList.add(predicate);
}
以这种方式工作完美,所以我的问题是这两种方式的主要区别是什么,我做错了什么?
修改
这是我使用netbeans 8.2
DatePicker
来自swingx 1.6
DatePicker发送给我Date,但我的类接收LocalDate,所以有这个转换方法
public static LocalDate dateToLocalDate(Date data) {
if (data != null) {
return data.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
} else {
return null;
}
}
我在betweenPredicate
添加了两个println来查看这些值是如何实现的
这是输出
V: 2018-02-01
V2: 2018-02-16