问题描述
在我的@Repository接口中,我使用包含参数(addressType)的JPQL @Query创建了自定义查找方法。
In my @Repository interface I created custom find method with JPQL @Query that contains parameter (addressType).
来自地址a其中a .addressType =:addressType
在方法中,我没有在参数上指定@Param(addressType)。所以我得到了
In the method I did not specify @Param("addressType") on the parameter. So I am getting
好的,这很清楚,但我使用的是Java 8.那么Java 8的特殊之处在哪里?
Okay, this is pretty much clear, but I am using Java 8. So what is special about Java 8 here?
推荐答案
在Java 8中,您可以使用反射来访问方法参数的名称。这使得 @Param
注释变得不必要,因为Spring可以从方法参数的名称中推断出JPQL参数的名称。
In Java 8, you can use reflection to access names of parameters of methods. This makes the @Param
annotation unnecessary, since Spring can deduce the name of the JPQL parameter from the name of the method parameter.
但您需要使用 -parameters
标志与编译器一起提供该信息。
But you need to use the -parameters
flag with the compiler to have that information available.
请参阅。
这篇关于Java 8 Spring Data JPA参数绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!