Java 如何使用cast编写hql查询?
我需要使用hql组合两个表,它们都有公共列,但是Java 如何使用cast编写hql查询?,java,hibernate,hql,Java,Hibernate,Hql,我需要使用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是一个整数,而b.stduid是一个字符串,但两列的数据是相同的 如何使用hql查询获得查询结果?刚刚注意到您使用的是JPA,在那里您不能强制转换或
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
是一个整数
,而b.stduid
是一个字符串
,但两列的数据是相同的
如何使用hql查询获得查询结果?刚刚注意到您使用的是JPA,在那里您不能强制转换或转换数据集。在查询语言中,只能比较相同类型的值!读入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
另请参见:
@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)")
是的,我的查询是错误的,但我需要使用hql cast为该查询提供结果。。。有可能吗?我认为只有在hibernate中才有可能,但您使用的是JPA@axtavt给了你hibernate文档的链接,这是错的,em我是对的?而casting将在短期内解决你的问题,我认为01es是有道理的。当您需要强制转换ID时,似乎出现了一些问题。我看到这些类型的非答案遍布堆栈溢出。一方面,01es关于模型最有可能被破坏的说法可能是正确的。另一方面,大多数现实世界的系统都不是一下子就能重构的。对于cast,我在spring data jpa提供的
@Query
注释中使用HQL时,必须使用完全限定的类名(例如java.lang.String
)。