2
我使用hibernate 5与hibernate-java8插件来使用LocalDateTime
字段。我现在已经具有日期字段的实体和用户现场像:休眠:使用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查询时,我也会得到预期的结果。我用下面的代码片段来执行(命名)查询:
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));
在我的测试情况下,坚持包含当前日期的单个事务,并为查询创建从昨天到明天的范围。检查MySQL工作台中的表格显示事务处在那里,并且日期字段具有正确的类型并且包含正确的值。然而,我的查询不会给我任何结果。
有什么我失踪?
什么是从和值?如果这个从大到小的逻辑解释。或者你的日期不在他们之间。 –