Kotlin Spring Data JPA Repository自定义方法Controller调用报错原因
报错原因及解决方案
核心报错原因
类型不匹配,触发Kotlin空安全检查报错
- Team类中定义的
matches字段类型为List<Match>,要求是「列表本身不可空、列表内所有元素也不可空」的类型 - 你在
MatchRepository中定义的findLatestMatchesbyTeam函数返回值类型为List<Match?>?,属于「列表本身可空、列表内元素也可空」的类型,二者类型不兼容,Kotlin禁止直接赋值。
其他说明
不需要为findLatestMatchesbyTeam额外定义抽象方法:该方法是接口的默认实现,内部调用的getByTeam1OrTeam2OrderByDateDesc会由Spring Data JPA自动生成实现逻辑,符合Spring Data JPA的规范,不需要手动写实现类。
修复方案
直接修正findLatestMatchesbyTeam的返回值类型,去掉不必要的可空标记即可:
// 修正后的方法定义 fun findLatestMatchesbyTeam(teamName: String?, count: Int): List<Match> { return getByTeam1OrTeam2OrderByDateDesc(teamName, teamName, PageRequest.of(0, count)) }
Spring Data JPA的集合类查询默认不会返回null,没有匹配结果时会返回空集合,所以不需要给返回值加可空标记。
内容的提问来源于stack exchange,提问作者Mama
相关产品推荐
相关产品推荐

