想要比较日期,但无法应用SQLExpression.date(java.time.LocalDate)

时间:2015-11-06 15:19:19

标签: querydsl

我之前的查询是这样的:

public List<Human> findAllHumansWithPets(){

    QHuman human = QHuman.human;
    QPet pet = QPet.pet;

    JPAQuery query = new JPAQuery(entityManager);

    //Joda-Time
    LocalDate first = new LocalDate(1990, 01, 01);
    LocalDate last = new LocalDate(1990, 02, 01);

    return query.from(human)
            .innerJoin(human.pet, pet)
            .where(SQLExpressions.date(human.age).between(first.toDate(), last.toDate()))
            .list(order);
}

它工作得很好。现在我更新了我的人类POJO中的age变量,使用java.time.LocalDate而不是org.joda.time.LocalDate。 Querydsl并不喜欢这样,现在正在抱怨SQLExpression.date的参数。

    //java.time.LocalDate
    LocalDate first = LocalDate.of(1990, 01, 01);
    LocalDate last = LocalDate.of(1990, 02, 01);

    return query.from(human)
            .innerJoin(human.pet, pet)
            .where(SQLExpressions.date(human.age).between(first, last))
            .list(order);
    }
  

DateTimeExpression&LT; java.lang.Comparable的&GT;在SQLExpressions中无法应用于com.mysema.query.types.path.DatePath&lt; java.time.LocalDate&gt;

我似乎无法找到有关此问题的任何解决方法。很高兴防止回到Joda-Time。有什么建议?

1 个答案:

答案 0 :(得分:0)

DateExpression.currentDate(LocalDate.class).between(..., ...)
DateExpression.currentDate(LocalDateTime.class).between(..., ...)