相关疑难解决方法(0)

为什么即使在Java 8上,Spring Data存储库方法参数名称也不可用?

我很难让测试从他们的示例中传递Pivotal的spring-boot1.4版本示例项目,该示例显示在其JPQL中spring-data-jpa使用未注释的命名参数

例如

来自example.springdata.jpa.simple.SimpleUserRepository

 @Query("select u from User u where u.firstname = :firstname")
 List<User> findByFirstname(String firstname);
Run Code Online (Sandbox Code Playgroud)

注意它没有使用@Param注释

这不能在我的机器上运行.我在这里详细介绍了这个例外,从标题中可以看出这一点.

参数绑定的名称不能为null或为空!对于命名参数,您需要在Java版本上使用@Param作为查询方法参数

所以我必须这样做:

@Query("select u from User u where u.firstname = ?1")
List<User> findByFirstname(String firstname);
Run Code Online (Sandbox Code Playgroud)

或这个:

@Query("select u from User u where u.firstname = :firstname")
List<User> findByFirstname(@Param("firstname") String firstname);
Run Code Online (Sandbox Code Playgroud)

我在用什么:

  • 操作系统 - Win7
  • Java - 1.8.0_112
  • IDE - Intellij IDEA 2016.2
  • JPA版本 - JPA v2.0
  • 配置 - spring-boot-1.4.1

所以我设置示例的方式有问题吗?

是否一次 …

java spring annotations spring-data spring-data-jpa

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

annotations ×1

java ×1

spring ×1

spring-data ×1

spring-data-jpa ×1