2013-05-28 3 views
0

저는 렌트카와 임대 요청을 저장하기 위해 오브젝트 데이터베이스 인 Objectdb를 사용하고 있습니다. 한 고객이 자동차 대여를 요청하면 해당 기간 (시작일부터 종료일까지)에 차량을 사용할 수 있는지 확인해야합니다. 내 데이터베이스에는 두 가지 테이블 (두 가지 클래스)이 있습니다 : 자동차와 임대료. 차를 사용할 수 있는지 확인하는 쿼리입니다.JPQL에서 JOIN을 수행 할 수 있습니까?

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에 문제가 있습니까? 또는 쿼리가 잘못 형성 되었습니까? 감사합니다.

답변

1

Car c와 Rental r이 쿼리로 연결되어 있지 않기 때문에 쿼리가 유효한 JOIN 쿼리가 아닙니다.

그러나 이것은 왜 결과가 비어 있는지 설명하지 않습니다. 작은 쿼리를 실행하여 문제를 격리하십시오. 예를 들어 대여 전용 (자동차 없음) 쿼리에서 날짜별로 대여 오브젝트를 검색 할 수 있습니까?

관련 문제