从方法名称生成查询的Spring Data错误

时间:2017-06-07 10:54:09

标签: java spring spring-data

我正在尝试在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 

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

这为我工作

 List<Person> findByFirstNameOrLastNameAllIgnoreCase(String firstName, String lastName);
相关问题