【问题标题】:Spring Data error generating query from method nameSpring Data错误从方法名称生成查询
【发布时间】:2017-11-08 16:32:54
【问题描述】:

我正在尝试在我的 Spring Data JPA 存储库中实现自定义方法。

我正在使用方法名称的查询生成,我有这样的东西:

List<Person> findByFirstNameOrLastName(String key);

我为该方法指定了一个参数,因为我有一个可以匹配 firstNamelastName 的搜索键,但是在应用程序启动时我得到了这个应用程序:

Caused by: org.springframework.beans.factory.BeanCreationException:
    Error creating bean with name 'personRepository': 
        Invocation of init method failed; nested exception is java.util.NoSuchElementException 

我想这个错误取决于方法签名...

那么,有没有办法使用查询创建为我的方法指定单个参数,或者我应该实现自定义逻辑来实现这一点?

【问题讨论】:

  • 查看this 以查看围绕已接受答案的其他选项。

标签: java spring spring-data


【解决方案1】:
List<Person> findByFirstNameOrLastName(String firstName, String lastName);

是的,这是方法签名的问题。当方法名称中存在“或”条件时,Spring Data 需要 2 个参数。并且您需要为这两个参数传递一个key 值。

或者,您可以在方法上写一个@Query,例如:

@Query("SELECT p FROM person p WHERE p.lastName=:key OR p.firstName =:key")
List<AccountInformation> findByFirstNameOrLastName(@Param("key") String key);

【讨论】:

    【解决方案2】:

    这对我有用

     List<Person> findByFirstNameOrLastNameAllIgnoreCase(String firstName, String lastName);
    

    【讨论】:

      猜你喜欢
      • 2018-06-24
      • 1970-01-01
      • 2015-04-14
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2020-01-23
      • 1970-01-01
      相关资源
      最近更新 更多