我使用对象数据库Objectdb来保存汽车租赁和租赁请求。 当一个客户要求租车时,我必须检查该车期间是否有车(从开始日期到结束日期)。在我的数据库中,我有两个表(两个类):汽车和租金。这是检查汽车是否可用的查询:
public List<Car> findByType(CarType type, Date start, Date end) {
TypedQuery<Car> query = em.createQuery("SELECT c FROM Car c, Rental r "
+ "WHERE c.type = :cartype AND "
+ "((r.start > :start AND r.start > :end) OR "
+ "(r.end < :start AND r.end < :end))", entityClass);
...
问题是此查询始终返回0辆可用的汽车。 JPQL中的JOIN有问题吗?或者,查询是否形成错误? 谢谢
答案 0 :(得分:1)
查询不是有效的JOIN查询,因为查询未连接Car c和Rental r。
但这并不能解释为什么你会得到空洞的结果。尝试通过运行较小的查询来隔离问题。例如,您是否可以按租赁(无车辆)查询中的日期检索租赁对象?