2011-01-25 12 views
35

İki tabloyu hql kullanarak birleştirmem gerekiyor, her ikisi de ortak sütun kullanıyor, ancak table1 ortak sütunu integer ve table2 ortak sütun StringHql sorgusunu cast ile nasıl yazarım?

şeklindedir. Örneğin

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 

Burada a.id bir integer iken b.stduid ise Bir string, ancak her iki sütunun verileri aynıdır.

Sorgu sonucunu hql sorgusu kullanarak nasıl alabilirim?

cevap

2

Sadece JPA kullandığınızı fark ettiğinizde, orada datatpes'i çeviremez veya dönüştüremezsiniz. Sorgu dilinde, yalnızca aynı türdeki değerler karşılaştırılabilir! http://download.oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbvu

+0

evet sorglum yanlış, ancak bu sorguyu hql cast kullanarak elde etmem gerekiyor ... Bu mümkün mü? – ver

+0

Sadece hazırda beklemede olduğunu düşünüyorum, ancak JPA kullanıyorsunuz? @axtavt size yanlış olan uyuşuk dokümanlar için bağlantı veriyor, doğru mu? – Eduard

55

HQL okumak destekler CAST (temel veritabanı destekliyorsa), bunu kullanabilirsiniz: Ayrıca

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 

bakınız:

+1

Döküm için, HQL'yi spring-data-jpa tarafından sağlanan '@ Query 'açıklamasında kullanırken tam nitelikli sınıf adını (ör." Java.lang.String ") kullanmam gerekiyordu. –

6

Gerçekten Neden iki enti katılmak için ihtiyacın olduğunu düşünmek gerek Farklı türlerin özelliklerine göre bağlanır. Büyük olasılıkla, varlıkların bir kısmının, altta yatan db tablolarının sütunları için değişen veri tiplerini de içerebilecek şekilde yeniden yapılandırılması gerektiğini önermektedir. Model doğruysa, Hazırda bekletmeye gerek yoktur.

+0

Döküm kısa vadede probleminizi çözecek olsa da, 01'lerin bir anlamı olduğunu düşünüyorum. Kimlik girmeniz gerektiğinde bir şey yanlış görünüyor. –