在我的@Repository界面中,我使用JPQL @Query创建了包含参数(addressType)的自定义查找方法。from Address a where a.addressType = :addressType
在该方法中,我没有在参数上指定@Param(“ addressType”)。所以我越来越
java.lang.IllegalArgumentException:参数绑定的名称不能为null或为空!对于命名参数,您需要使用@Param作为Java版本
好的,这很清楚,但是我正在使用Java8。那么Java 8在这里有什么特别之处?
最佳答案
在Java 8中,可以使用反射来访问方法参数的名称。这使@Param
注释成为不必要的注释,因为Spring可以从方法参数的名称中推断出JPQL参数的名称。
但是您需要在编译器中使用-parameters
标志,以使该信息可用。
请参见http://docs.oracle.com/javase/tutorial/reflect/member/methodparameterreflection.html。