2011-12-26 4 views
0

where 절이있는 단일 테이블을 참조하는 최대 절전 모드를 사용하여 쿼리를 수행했습니다.최대 절전 모드에서 복잡한 쿼리 수행

내가 SQL에서 다음 쿼리를 선택하고있다 :

SELECT URN.ID, 
    URN.USERNAME, 
    (SELECT NAME FROM CITY WHERE ID=URN.CITY_ID 
) AS CITY , 
    (SELECT NAME FROM STATE WHERE ID=URN.STATE_ID) AS STATE, 
    (SELECT NAME FROM COUNTRY WHERE ID = URN.COUNTRY_ID) AS COUNTRY 
FROM USERREGISTRATION_NEW URN 

URN.CITY_ID, URN.STATE_ID는 URN.COUNTRY_ID 숫자 값이 포함되어 있습니다.

도시, 주, 국가 이름은 숫자 ID 전달시 해당 테이블에서 검색됩니다.

는 는 그래서, 내가 어떻게 Hibernate에서이 쿼리를 작성할 수

?

또한 Many-to-One 등의 튜토리얼을 이해하지 못합니까?

나는 Vaannila

답변

2

이 쿼리는 HQL에 문자 그대로 번역 할 수 있습니다에서 참조를 촬영했다. 테이블 이름을 엔티티 클래스 이름으로 변경하고 열 이름을 엔티티 속성 이름으로 변경하면 HQL 쿼리가 생성됩니다.

그러나이 쿼리는 조인으로 작성해야합니다. SQL, 그것은 최대 절전 모드를 사용하여,

select urn.id, urn.username, city.name as city, state.name as state, country.name as country 
from USERREGISTRATION_NEW urn 
inner join city on urn.city_id = city.id 
inner join state on urn.state_id = state.id 
inner join country on urn.country_id = country.id 

을 수 그리고 것입니다, 당신은 항아리와시, 항아리와 국가 타협과 다른, 그리고 항아리와 나라 사이의 또 다른 하나 사이에 ManyToOne 연관을 가질 것이다. HQL은 다음과 같다 :

select urn.id, urn.userName, cityEntity.name as city, stateEntity.name as state, countryEntity.name as country 
from Urn urn 
inner join urn.city as cityEntity 
inner join urn.state as stateEntity 
inner join urn.country as countryEntity 

또는 간단한 :

select urn.id, urn.userName, urn.city.name as city urn.state.name as state, urn.country.name as country 
from Urn urn 
관련 문제