加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:41:41 所属栏目:Java 来源:网络整理
导读:我有一个@Entity视频与List Tag有一对多的关系.标签作为其中一个字段.我使用以下的@Repository使用 Spring Data来获取最流行的标签: @Repositorypublic interface TagRepository extends CrudRepositoryTag,Integer{ @Query("SELECT t FROM Tag t WHERE (SE
我有一个@Entity视频与List< Tag>有一对多的关系.标签作为其中一个字段.我使用以下的@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);
}

查询被Spring处理并认为有效,我在本地测试了生成的SQL vs我的数据库,它返回了2个标签.但是在我的代码中,当我调用方法findMostViewedTags(100)时,我收到值Null.

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

>如果找不到结果,该方法是否应返回空列表或Null?我希望的行为是收到一个空列表.
>为什么方法调用返回Null而不是List< Tag>尺寸()2?

解决方法

>如果未找到结果,则正常行为确实返回空列表.如果List< Object>是定义的接口中方法的返回值,该方法永远不应返回Null. >问题是该方法的参数是在查询中的任何位置使用的.出于某种原因,Spring决定在这种情况下返回Null.解决方案:删除未使用的参数或使用Query中的参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读