Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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/7/neo4j/3.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 Spring数据jpa,本机查询,返回了错误的字段类型_Java_Hibernate_Jpa_Spring Data Jpa_Jpa 2.0 - Fatal编程技术网

Java Spring数据jpa,本机查询,返回了错误的字段类型

Java Spring数据jpa,本机查询,返回了错误的字段类型,java,hibernate,jpa,spring-data-jpa,jpa-2.0,Java,Hibernate,Jpa,Spring Data Jpa,Jpa 2.0,我的存储库中有以下本机查询方法: @Query(value="SELECT appSub.ApplicationFormId as appFormId, appSub.profileId as profileId, " + "p.CASId as profileCASId, ps.programId as programId FROM [unicas_config].[dbo].ApplicationFormEarlyDecisionConfig appFormE

我的存储库中有以下本机查询方法:

@Query(value="SELECT appSub.ApplicationFormId as appFormId, appSub.profileId as profileId, "
                + "p.CASId as profileCASId, ps.programId as programId FROM [unicas_config].[dbo].ApplicationFormEarlyDecisionConfig appFormED "
                + "INNER JOIN [unicas_ux].[dbo].ApplicationSubmission appSub ON appFormED.ApplicationFormId = appSub.applicationFormId "
                + "INNER JOIN [unicas_ux].[dbo].Profile p ON appSub.profileId = p.id "
                + "INNER JOIN [unicas_ux].[dbo].ProgramSelected ps ON p.id=ps.ProfileId AND appSub.applicationFormId = ps.instanceId "
                + "WHERE appFormED.EarlyDecisionVerdictDate >=:fromDate AND appFormED.EarlyDecisionVerdictDate <:toDate "
                + "AND appSub.EarlyDecisionStatus='Applied Early Decision' "
                + "AND appSub.ApplicationStatus='Received' "
                + "AND ps.IsPaid =1 "
                + "ORDER BY appSub.ApplicationFormId",nativeQuery = true)
List<Object[]> getAllEarlyDecisionApplicantsWithPaidProgramsOnVerdictDate(@Param("fromDate") Date fromDate, @Param("toDate") Date toDate);

当我这样做的时候,我得到java. Lang.CasasCasExtExc:JavaLang.整数不能被转换成java.郎。作为Hibernate,考虑这些整数类型的ID,而不是长。


请告诉我如何通过编程告诉Hibernate返回正确的类型。

为了安全起见,我总是将数字类型转换为数字,然后从中获取所需类型的值,因为JDBC驱动程序可以返回整数、长、BigDecimal等,具体取决于数据库列的类型:

((Number) obj[0]).longValue()

当然,如果列可以为null,不要忘记检查null。

我认为这与Hibernate没有多大关系。JDBC驱动程序将返回与数据库中的列类型对应的Java类型。为什么不能使用Java整数?@AlanHay。是的,你是莱特。我看到DB中的列类型是Int类型,甚至实体ID也是long类型。这就是为什么我得到的是整数而不是long。
((Number) obj[0]).longValue()