Java Hibernate:使用LocalDateTime查询范围

Java Hibernate:使用LocalDateTime查询范围,java,hibernate,jpa,hql,Java,Hibernate,Jpa,Hql,我使用hibernate 5和hibernate-java8插件来使用LocalDateTime字段。我现在有一个实体,它有一个日期字段和一个用户字段,如: @Entity public class Transaction { // ... private User user; private LocalDateTime date; // .. } 现在我只想查询特定时间范围内用户的所有事务。因此,我使用以下查询: SELECT t FROM Transacti

我使用hibernate 5和hibernate-java8插件来使用
LocalDateTime
字段。我现在有一个实体,它有一个日期字段和一个用户字段,如:

@Entity
public class Transaction {
    // ...
    private User user;
    private LocalDateTime date;
    // ..
}
现在我只想查询特定时间范围内用户的所有事务。因此,我使用以下查询:

SELECT t FROM Transaction t WHERE t.user = :owner AND t.date BETWEEN :from AND :to
奇怪的是,这个查询没有给我任何结果。我还尝试使用
操作符,但也没有任何帮助。当我省略时间范围部分时,我为用户获得了正确的事务列表。当我在MySQL工作台中执行Hibernate生成的SQL查询时,我也得到了预期的结果。我使用以下代码段执行(命名)查询:

在我的测试用例中,a使用当前日期保存了一个事务,并为查询创建了从昨天到明天的范围。在MySQL工作台中检查该表,可以发现事务已经存在,并且日期字段具有正确的类型并包含正确的值。但我的查询不会给我任何结果


我遗漏了什么吗?

您作为参数传递的日期也应该是

LocalDateTime 请参阅下面的示例代码,这可能会对您有所帮助

LocalDate=LocalDate.of(2015,8,11);
TypedQuery query=this.em.createQuery(“从MyEntity e中选择e,其中日期介于:开始和:结束之间”,MyEntity.class);
query.setParameter(“开始”,date.minusDays(2));
query.setParameter(“end”,date.plusDays(7));
MyEntity e=query.getSingleResult();

from和to的值是多少?如果from大于to,则为逻辑解释。或者你的约会不在他们之间。
public <T> List<T> findList(Class<T> type, String queryName,
        Map<String, Object> params) {
    final EntityManager em = this.entityManager.get();
    final TypedQuery<T> query = em.createNamedQuery(queryName, type);
    params.forEach(query::setParameter);
    return query.getResultList();
}
findList(Transaction.class, Transaction.BY_USER_AND_RANGE,
            ImmutableMap.of("owner", owner, "from", from, "to", to));
LocalDate date = LocalDate.of(2015, 8, 11);
TypedQuery<MyEntity> query = this.em.createQuery("SELECT e FROM MyEntity e WHERE date BETWEEN :start AND :end", MyEntity.class);
query.setParameter("start", date.minusDays(2));
query.setParameter("end", date.plusDays(7));
MyEntity e = query.getSingleResult();