2011-12-26 23 views
0

where節を持つ単一のテーブルを参照するHibernateを使ってクエリを実行しました。Hibernateで複合クエリを実行する

私は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に書き込むにはどうすればよいですか?

また、私は多対1などのチュートリアルを理解していませんか?

私はこのクエリはHQLに文字通り翻訳することができVaannila

答えて

2

からリファレンスを取っていました。テーブル名をエンティティクラス名に変更し、列名をエンティティプロパティ名に変更するだけで、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 

そして、休止状態を使用してだろう、あなたは骨壷や市、壺や国家betwen別のもの、と壺と国との間に別のものの間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 
関連する問題