Как мне написать hql запрос с приведением? - PullRequest
37 голосов
/ 25 января 2011

Мне нужно объединить 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 запрос?

Ответы [ 3 ]

62 голосов
/ 25 января 2011

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 

См. Также:

6 голосов
/ 25 января 2011

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

2 голосов
/ 25 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...