LocalDate Predicate

时间:2018-02-02 15:17:42

标签: java java-8 predicate

这是我的表

enter image description here

所选列是我在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

的屏幕

enter image description here

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

0 个答案:

没有答案