gpt4 book ai didi

java - Spring JPA Query 返回 Null 而不是 List

转载 作者:IT老高 更新时间:2023-10-28 13:48:36 32 4
gpt4 key购买 nike

我有一个 @Entity VideoList<Tag> tags 具有 一对多 关系作为其领域之一。我使用以下 @Repository使用 Spring Data 获取最流行的标签:

@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);
}

QuerySpring 处理并认为是有效的,我在本地测试了生成的 SQL 与我的数据库,它返回了 2 标签。然而,在我的代码中,当我调用 findMostViewedTags(100) 方法时,我收到了值 Null

查询查找策略是默认的“CREATE_IF_NOT_FOUND”。

  1. 如果没有找到结果,该方法应该返回一个空列表还是Null?我想要的行为是收到一个空列表。
  2. 为什么方法调用返回Null而不是 List<Tag>使用 size() 2?

最佳答案

  1. 如果没有找到结果,正常行为确实会返回一个空列表。如果一个 List<Object>是定义接口(interface)中方法的返回值,该方法永远不应该返回Null .
  2. 问题在于,为方法提供了一个参数,并且在查询中的任何地方都没有使用。出于某种原因,Spring 决定在这种情况下返回一个 Null。解决方法:去掉未使用的参数或者使用Query中的参数。

关于java - Spring JPA Query 返回 Null 而不是 List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045661/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com