如何使用Spring Data JpaRepository在所有列中查找字母

时间:2018-02-02 15:44:11

标签: java spring repository spring-data-jpa

这是我的存储库

public interface NoteRepository extends JpaRepository<Note,Long> {
    List<Note> findByContentContains(String content);

和我在NoteController类中使用&#34; e&#34;在内容

列中
@GetMapping("/notesletter")
    public List<String> getLetters(){
        return noteRepository.findByContentContains("e")
                .stream()
                .map(note -> note.getContent())
                .collect(Collectors.toList());
    }

请帮助我找一个方法,它会返回每个单词的字母&#34; e&#34;例如,从所有列返回。 我正在和Postman一起工​​作

2 个答案:

答案 0 :(得分:1)

您可以尝试使用方法名称中的或操作,如下所示。 或者findByLastnameOrFirstname

https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/jpa.repositories.html

其他方法也是可能的。

如果您知道本机查询或JPQL等效项,则返回检查实体的所有列的结果。

使用

  存储库接口中方法上方的

@Query 可以采用JPQL或本机查询。

     如果您知道查询,也可以使用

@NamedQuery 注释。这个注释要在Entity类上使用,name属性用于指定返回数据的访问方法名称,这可以在存储库接口中使用。

答案 1 :(得分:1)

当然,您可以进行原生查询

 @Query("select u from Note u where u.COL1 = ?1 and u.COL2 = ?1")
 List<Note> findByContentContains(String content)

或使用下面给出的jpa特性,注意提到findByLastnameOrFirstnameStartingWith很容易理解,所以分别将你的名字,姓氏替换为colu1name,col2name。Refer here for more jpa method conventions`

public interface NoteRepository extends JpaRepository<Note,Long> {

     List<Note> findByLastnameOrFirstnameStartingWith(String param1,String param2)

     static List<Note> findByContentContains(String content){
      findByLastnameOrFirstnameStartingWith(content,content);
   }
 }