我需要使用hql组合2个表,两个表都有公共列,但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查询获取查询结果?
答案 0 :(得分:61)
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
另见:
答案 1 :(得分:6)
你真的需要思考为什么你需要通过不同类型的属性加入两个实体。很可能它表明某些实体需要重构,这可能包括更改基础数据库表的列的数据类型。如果模型正确,则无需扭转Hibernate。
答案 2 :(得分:2)
刚刚注意到您正在使用JPA,在那里您无法转换或转换数据表。在查询语言中,只能比较相同类型的值!阅读http://download.oracle.com/javaee/5/tutorial/doc/bnbuf.html#bnbvu
答案 3 :(得分:1)
我必须像这样将其转换为String:
@Query( value = "select new com.api.models.DResultStatus("+
"cast(ds.demoId as java.lang.String),cast(ds.comp as java.lang.String),cast(ds.dc as java.lang.String),cast(be.buildUrl as java.lang.String)")