Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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/9/spring-boot/5.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
Spring数据jpa@Query注释的工作原理_Spring_Spring Boot_Spring Data_Spring Data Jpa_Jpql - Fatal编程技术网

Spring数据jpa@Query注释的工作原理

Spring数据jpa@Query注释的工作原理,spring,spring-boot,spring-data,spring-data-jpa,jpql,Spring,Spring Boot,Spring Data,Spring Data Jpa,Jpql,我不熟悉Spring数据和JPA。我很好奇查询注释是如何工作的。就像在我的场景中一样,我需要一个组织的所有用户ID。这就是我所做的: @Query("select o.userId from User o where o.orgId = :orgId") List <Integer> findUserIdsByOrgId(@Param("orgId")int orgId); 当我从o.userId中删除userId时,将返回整个对象,而不是整数 我的假设是,如果返回类型与

我不熟悉
Spring数据
JPA
。我很好奇查询注释是如何工作的。就像在我的场景中一样,我需要一个组织的所有
用户ID
。这就是我所做的:

 @Query("select o.userId from User o where o.orgId = :orgId")   
 List <Integer> findUserIdsByOrgId(@Param("orgId")int orgId);
当我从
o.userId
中删除
userId
时,将返回整个对象,而不是
整数


我的假设是,如果返回类型与查询中的返回类型不匹配,应该抛出一个错误。

将返回类型从
List
更改为
List
,它应该可以正常工作。

问题是这样的

如果类型参数是无界的,则用其边界或对象替换泛型类型中的所有类型参数。因此,生成的字节码只包含普通类、接口和方法


所以Spring不能检查泛型类型,并且相信您不会不匹配类型。当然,如果您返回的是
Integer
而不是
User
(没有泛型),那么Spring将抛出一个错误。

我不是说有任何问题。如果我通过查询得到一个对象,并且方法返回类型是integer,这是一个疑问。它应该抛出一个解析错误。回报如何变化
 @Query("select o from User o where o.orgId = :orgId")  
 List <Integer> findUserIdsByOrgId(@Param("orgId")int orgId);