2013-11-22 4 views
0

사람이 쿼리에 대한 해당 HQL을 서면으로 도와 줄 수최대 절전 모드 쿼리

SELECT IFNULL(oea.`organization_name`,'') FROM `consultation_appointment` ca 
JOIN `organization_employee_association` oea ON ca.`consultation_id` = oea.id 
JOIN professional_profile pp ON oea.`employee_profile_id` = pp.profile_id 

내가 할 수 있었던 ConsultationAppointment 클래스는 organization_employee_association 변수를 가지고 있기 때문에 먼저이

select ca.name from ConsultationAppointment ca join ca.consultation oea 

처럼 가입을 가입 할 수 그래서 가입하기가 더 쉽다. organization_employee_association 클래스가 organization_employee_association 클래스에 직접 매핑되지 않는 것이 어렵다.

심지어 GORM 기준 쿼리가 도움이됩니다.

+0

음,이 협회 ... –

+0

@JB Nizet 당신이 훨씬 더 명확 –

+0

당신은 당신이 사이에 조인을 만들려면 개체 사이의 연결이 필요하다는 것을 알고 할 수 있습니다 괜찮다면 추가 그 실체들. 필요한 연관성을 추가하십시오. 당신의 엔티티와 테이블을 모른 채 더 정확하게 말할 수는 없습니다. –

답변

1

HQL은 두 개의 연관되지 않은 엔터티를 결합 할 수 없으므로 대신 데카르트 제품을 사용해야합니다.

또 다른 가능한 방법은 createSQLQuery() 방법을 사용하는 것입니다. 임의의 조인을 실행하는 데 더 많은 유연성을 제공합니다.

String query = "SELECT ca.name FROM consultation_appointment ca JOIN organization_employee_association oea ON ca.consultation_id = oea.id JOIN professional_profile pp ON oea.employee_profile_id = pp.profile_id"; 
List<String> caNames = session.createSQLQuery(query).list(); 
+0

하지만 가능한 경우에만 시도해 볼 수 있습니다. 그러나 hql에서 우리가 파헤쳐야 할 몇 가지 방법이 있어야합니다. –

+0

데카르트 제품으로 HQL을 사용하는 대답을 편집했습니다. – thanhnguyen

+0

귀하의 노력에 감사드립니다. 그러나 오류가 있습니다. 우리는 이미 이와 같이 시도했지만, 오류는 "on"절을 사용하여 쿼리합니다. –