Java 使用Maven运行Spring启动应用程序时出错:参数绑定的名称不能为null
我使用Spring boot 1.5.12和Java 8的Spring boot应用程序在我的开发环境中执行得非常好,但在部署到测试环境时,我面临着一些困难: 我使用:mvn spring boot:run启动应用程序,执行会因错误而停止:Java 使用Maven运行Spring启动应用程序时出错:参数绑定的名称不能为null,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,我使用Spring boot 1.5.12和Java 8的Spring boot应用程序在我的开发环境中执行得非常好,但在部署到测试环境时,我面临着一些困难: 我使用:mvn spring boot:run启动应用程序,执行会因错误而停止: java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param
java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.
java.lang.IllegalArgumentException:参数绑定的名称不能为null或空!在JDK<8上,您需要使用@Param作为命名参数,在JDK 8或更高版本上,请确保使用-parameters进行编译。
我做了一些搜索,了解到为了让我的存储库方法正常工作,比如:
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {
@Query("SELECT u FROM User u WHERE u.primaryEmail.emailAddress = :emailAddress "
+ "AND u.deleted = 0")
Optional<User> findByPrimaryEmailAddress(String emailAddress);
@RepositoryRestResource(collectionResourceRel=“users”,path=“users”)
公共接口UserRepository扩展了JpaRepository、UserRepositoryCustom{
@查询(“从用户u中选择u,其中u.primaryEmail.emailAddress=:emailAddress”
+“和u.deleted=0”)
可选findByPrimaryEmailAddress(字符串emailAddress);
我需要使用“-parameters”选项进行编译,因为我没有将@Param注释放在参数“emailAddress”上
它在Eclipse中工作,因为编译器有一个激活的选项,但是当我在Eclipse之外使用maven编译应用程序时,必须设置该选项
我的问题是,因为我在pom.xml中使用了默认的spring boot maven插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
org.springframework.boot
在github上,我无法在1.5.12版本上看到
<parameters>true</parameters>
true
你知道我如何解决我的问题吗
我将尝试用带“-parameters”编译器arg的maven编译器插件替换springbootmaven插件,但是如果我可以使用默认的springbootmaven插件,我会更有信心
谢谢!您需要emailAddress的参数,jpql无法理解给出了什么参数
Optional<User> findByPrimaryEmailAddress(@Param("emailAddress") String emailAddress);
可选findByPrimaryEmailAddress(@Param(“emailAddress”)字符串emailAddress);
试一试!我认为spring boot maven插件中的“-parameters”选项可能是最近添加的,并且文档对spring boot 1.5.12不正确(可能是对spring boot 2.0.0)
我通过配置maven编译器解决了这个问题:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
maven编译器插件
${java.version}
${java.version}
-参数
重要提示:必须设置“-parameters”参数实际上,Spring数据提供了一种通过读取参数名称来避免“@Param”注释的方法。使用Java 8和“-parameters”编译标志是可能的。