gpt4 book ai didi

java - JPA条件查询有3个条件

转载 作者:行者123 更新时间:2023-12-01 13:18:15 25 4
gpt4 key购买 nike

我需要选择从下一个小时到接下来的两个小时的所有待处理预订。我有这样的标准:

calendar.setTime(new Date());
calendar.add(Calendar.HOUR, 1);
cb.and(cb.greaterThanOrEqualTo(bookingRoot.<Date>get("pickupTime"), calendar.getTime()));
calendar.add(Calendar.HOUR, 2);
cq.where(cb.and(cb.equal(bookingRoot.get("status"), CabStatus.PENDING), cb.lessThanOrEqualTo(bookingRoot.<Date>get("pickupTime"), calendar.getTime())));
return getEntityManager().createQuery(cq).getResultList();

但它会选择所有取货时间少于 2 小时后的预订。任何帮助表示赞赏。

最佳答案

你的第一个 cb.and(...) 不在 where- 部分。你应该做这样的事情:

calendar.setTime(new Date());
calendar.add(Calendar.HOUR, 1);
Predicate greater = cb.and(cb.greaterThanOrEqualTo(bookingRoot.<Date>get("pickupTime"),calendar.getTime()));
calendar.add(Calendar.HOUR, 2);
Predicat lower = cb.and(cb.equal(bookingRoot.get("status"), CabStatus.PENDING), cb.lessThanOrEqualTo(bookingRoot.<Date>get("pickupTime"), calendar.getTime())));
cq.where(cb.and(greater,lower);
return getEntityManager().createQuery(cq).getResultList();

您可以使用 system.out.println 查看 JPA 创建的查询:

 TypedQuery<ENTITYTYPE> typedQuery = em.createQuery(cq);
System.out.println(typedQuery);
return typedQuery.getResultList()

关于java - JPA条件查询有3个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22286586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com