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?
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:
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.
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