尝试使用 JPA 查询我的数据库时出现 500 错误

Getting 500 error when trying to query my db with JPA

这是我得到的错误:

Parameter value [\] did not match expected type [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [\] did not match expected type [java.lang.String (n/a)]

我有一个基本站点,允许您创建包含标题、艺术家和评级的“歌曲”。您可以 edit/delete 歌曲,应用程序将在主页上显示所有歌曲。它具有按评分降序排列歌曲的功能,该功能有效,并且具有搜索功能,但只有一半有效。

我不明白这是怎么回事,因为当我第一次使用该功能搜索时它有效,然后在第二次搜索时它总是抛出这个错误。

深入挖掘,我认为这些错误行是相关的:

    at jdk.proxy3/jdk.proxy3.$Proxy112.findByArtistContaining(Unknown Source)
    at com.cshannon.lookify.services.SongService.findByArtist(SongService.java:50)
    at com.cshannon.lookify.controllers.MainController.search(MainController.java:105)

我不明白为什么它认为我输入的字符串是一个未知的来源,而当我第一次没有错误地输入它时。我已经尝试将路线从 Get 更改为 Post,但没有任何区别。

控制器代码:

@GetMapping("/search")
    public String search(
            Model model,
            @RequestParam(value="search") String search
            ) {
        
        if (search.isEmpty()) {
            return "redirect:/dashboard";
        }
        
        ArrayList<Song> songs = ss.findByArtist(search);
        model.addAttribute("songs", songs);
        
        return "search.jsp";
        
    }

服务:

// Find by artist
    public ArrayList<Song> findByArtist(String search) {
        
        return (ArrayList<Song>) sr.findByArtistContaining(search);
        
    }

存储库:

ArrayList<Song> findByArtistContaining(String search);

如果这对我有帮助的话,这是我用来从用户那里获取字符串的表单:

<form action="/search" class="d-flex">
    <input type="search" name="search" class="form-control me-2" placeholder="Search" aria-label="Search"/>
    <input type="submit" value="Search Artists" class="btn btn-outline-success"/>
</form>

哇,我发现问题了。我不知道对此的低级解释,但出于某种原因,Spring Boot 2.6.6 并在依赖项中将其更改为 2.6.3 修复了它。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

如果您想修复安全问题 CVE-2022-22968 和这个错误,您可以使用 spring-boot 版本 2.5.13