2012-05-28 3 views
0

# Product table의 partId가 null 일 수 있습니다. partId가 null 인 경우 제품을 볼 수 없습니다. 내 제품 표 11 개 항목과이 개 항목이있는 경우 널 (null)로 partId 한 수 스피 만 9 항목 hql 쿼리 서식 지정

String hql = "from " + Product.class.getName() + " bs, " 
       + Part.class.getName() + " dm, " 
          + Manufacturer.class.getName() + " m where " 
          + " m.id = bs.manufacturerId and dm.id = bs.partId "; 
======================================== 
OUPUT이 제품 이름처럼되고있다

을 볼 수 | PartName | 제조업체 이름

답변

1

내부 조인 대신 왼쪽 조인을 수행해야합니다. 그러나 이는 엔티티가 서로의 ID를 포함하는 대신 서로 연결되어있는 경우에만 가능합니다.

마찬가지로, HQL에서는 불가능합니다.

쿼리가 제공되면 제품 및 제조업체 간 ManyToOne과 제품 및 부품 간 ManyToOne이 있어야합니다.

또한

당신은 클래스 이름을 연결하지 않은 경우, 쿼리는 훨씬 더 읽을 것하고 적절한 별명을 사용하는 경우 : 협회가 존재하면

String hql = "from Product product, Part part, Manufacturer manufacturer" 
      + " where manufacturer.id = product.manufacturerId" 
      + " and part.id = product.partId"; 

를 쿼리는해야

String hql = "select product.name, part.name, manufacturer.name" 
      + " from Product product" 
      + " left join product.part part" 
      + " left join product.manufacturer manufacturer"; 
+0

제품과 파트 테이블 간에는 많은 관계가 있습니다. 미안, 제품 테이블에서 partId가 null 인 경우 product.parts를 예외로 처리합니다. –

+0

ManyToOne을 사용하는 경우 Product 클래스에 partId 필드를 매핑하지 않아야합니다. 같은 분야. 그리고 아니오, 예외는 없습니다. HQL에 대한 Hibernate 문서를 읽었습니까? –