在我的@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

09-11 03:12