Frage Wie schreibe ich hql Abfrage mit Cast?


Ich muss 2 Tabellen mit hql kombinieren, beide haben gemeinsame Spalte, aber table1 gemeinsame Spalte ist integer und table2 gemeinsame Spalte ist String

Beispielsweise,

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

Hier a.id ist ein integer während b.stduid ist ein string, aber Daten beider Spalten sind gleich.

Wie kann ich das Ergebnis der Abfrage mit Hilfe der HQL-Abfrage erhalten?


35
2018-01-25 08:32


Ursprung


Antworten:


HQL unterstützt CAST (Wenn die zugrunde liegende Datenbank dies unterstützt), können Sie es verwenden:

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 

Siehe auch:


58
2018-01-25 13:06



Sie müssen wirklich darüber nachdenken, warum Sie zwei Entitäten durch Eigenschaften verschiedener Typen verbinden müssen. Höchstwahrscheinlich schlägt es vor, dass einige der Entitäten refaktorisiert werden müssen, was das Ändern von Datentypen für Spalten der zugrunde liegenden db-Tabellen einschließen könnte. Wenn das Modell korrekt ist, muss Hibernate nicht gedreht werden.


6
2018-01-25 20:55



Habe gerade bemerkt, dass du JPA verwendest, da du keine Datentypen ausgeben oder konvertieren kannst. In der Abfragesprache können nur Werte desselben Typs verglichen werden! einlesen http://download.oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbvu 


2
2018-01-25 08:46