Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用cast编写hql查询?_Java_Hibernate_Hql - Fatal编程技术网

Java 如何使用cast编写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,在那里您不能强制转换或

我需要使用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,在那里您不能强制转换或转换数据集。在查询语言中,只能比较相同类型的值!读入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 
另请参见:


您确实需要思考,为什么需要通过不同类型的属性连接两个实体。最有可能的情况是,它表明一些实体需要重构,这可能包括更改底层数据库表列的数据类型。如果模型正确,则无需扭曲Hibernate。

我必须将其转换为字符串,如下所示:

 @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
)。