web-dev-qa-db-fra.com

Comment écrire une requête hql avec cast?

J'ai besoin de combiner 2 tables en utilisant hql, les deux ont une colonne commune, mais table1 la colonne commune est integer et table2 la colonne commune est String

Par exemple,

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

Ici a.id est un integer tandis que b.stduid est un string, mais les données des deux colonnes sont identiques.

Comment puis-je obtenir le résultat de la requête en utilisant la requête hql?

37
ver

HQL prend en charge CAST (si la base de données sous-jacente le prend en charge), vous pouvez l'utiliser:

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 

Voir aussi:

64
axtavt

Vous devez vraiment vous demander pourquoi vous avez besoin de joindre deux entités par des propriétés de types différents. Cela suggère très probablement que certaines des entités doivent être refactorisées, ce qui pourrait inclure la modification des types de données pour les colonnes des tables de base de données sous-jacentes. Si le modèle est correct, il ne sera pas nécessaire de tourner Hibernate.

6
01es

Je viens de remarquer que vous utilisez JPA, là vous ne pouvez pas caster ou convertir des datatpes. Dans le langage de requête, seules les valeurs du même type peuvent être comparées! lire http://download.Oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbv

2
Eduard