我正在尝试在Spring Data JPA存储库中实现自定义方法。
我正在使用方法名称生成查询,我有类似的东西:
List<Person> findByFirstNameOrLastName(String key);
我为该方法指定了一个参数,因为我有一个匹配firstName
或lastName
的搜索键,但在应用程序启动时我得到了这个应用程序:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'personRepository':
Invocation of init method failed; nested exception is java.util.NoSuchElementException
我认为这个错误取决于方法签名......
那么,有没有办法使用查询创建为我的方法指定单个参数,还是应该实现自定义逻辑来实现这一目标?
答案 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);