web-dev-qa-db-ja.com

キャストを使用してhqlクエリを作成するにはどうすればよいですか?

Hqlを使用して2つのテーブルを結合する必要があります。両方とも共通の列を持っていますが、table1共通​​列はintegerおよびtable2共通​​の列はStringです

例えば、

select a.id as id,a.name as name,b.address as address 
from Personal as a,Home as b 
where a.id=b.studid

ここに a.idintegerであり、b.stduidstringですが、両方の列のデータは同じです。

Hqlクエリを使用してクエリの結果を取得するにはどうすればよいですか?

37
ver

HQLはCASTをサポートしています(基になるデータベースがサポートしている場合)、それを使用できます:

select a.id as id,a.name as name,b.address as address 
from Personal as a,Home as b
where cast(a.id as string) = b.studid 

以下も参照してください:

64
axtavt

異なるタイプのプロパティで2つのエンティティを結合する必要がある理由を本当に考える必要があります。ほとんどの場合、エンティティの一部をリファクタリングする必要があることを示唆しています。これには、基礎となるdbテーブルの列のデータ型の変更が含まれる場合があります。モデルが正しい場合、Hibernateをひねる必要はありません。

6
01es

あなたがJPAを使用していることに気づいただけで、そこでデータ型をキャストしたり変換したりすることはできません。クエリ言語では、同じ型の値のみを比較できます!読み取り http://download.Oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbv

2
Eduard