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