Spring JPA 查询 returns Null 而不是 List

Spring JPA Query returns Null instead of List

我有一个 @Entity Video 具有 一对多 关系,List<Tag> tags 作为其字段之一。我使用以下 @Repository 使用 Spring 数据 来获取最流行的标签:

@Repository
public interface TagRepository extends CrudRepository<Tag, Integer>{
    @Query("SELECT t FROM Tag t WHERE (SELECT SUM(v.views) FROM Video v WHERE t MEMBER OF v.tags) > 0")
    public List<Tag> findMostViewedTags(int maxTags);
}

查询Spring[=35=处理并认为有效,我测试了生成的SQL 对比我的本地数据库,它 returned 2 Tags。然而,在我的代码中,当我调用方法 findMostViewedTags(100).

时,我收到值 Null

查询查找策略是默认的"CREATE_IF_NOT_FOUND"。

  1. 如果没有找到结果,方法return应该是一个空列表还是Null?我想要的行为是收到一个空列表。
  2. 为什么方法调用 return Null 而不是 List<Tag> with size() 2?
  1. 如果没有找到结果,正常的行为确实是 return创建一个空列表。如果一个 List<Object> 是定义接口中方法的 return 值,则该方法不应该 return Null.
  2. 问题是为方法提供了一个参数,但没有在 查询 中的任何地方使用。出于某种原因 Spring 在这种情况下决定 return a Null。解决方法:删除未使用的参数或使用Query.
  3. 中的参数

我遇到过类似的问题。原因是我正在使用 Mockito 并且没有使用 when().

正确地模拟数据