Как написать hql-запрос с помощью cast?

Мне нужно объединить 2 таблицы с помощью hql, оба имеют общий столбец, но 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.id является integer, а b.stduid является String, но данные обоих столбцов одинаковы.

Как я могу получить результат запроса с помощью запроса hql?

Ответ 1

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 

См. также:

Ответ 2

Вам действительно нужно подумать, почему вам нужно объединить два объекта по свойствам разных типов. Скорее всего, это предполагает, что некоторые из объектов необходимо реорганизовать, что может включать изменение типов данных для столбцов базовых таблиц db. Если модель правильная, нет необходимости перекручивать Hibernate.

Ответ 3

Только что заметил, что вы используете JPA, там вы не можете отличать или конвертировать datatpes. В языке запросов можно сравнивать только значения одного и того же типа! читать http://download.oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbvu