【发布时间】:2016-05-04 21:27:59
【问题描述】:
我有一个 @Entity Video 与 List<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);
}
Query 被 Spring 处理并认为是有效的,我在本地测试了生成的 SQL 与我的数据库,它返回了 2 标签。然而,在我的代码中,当我调用 findMostViewedTags(100) 方法时,我收到了值 Null。
查询查找策略是默认的“CREATE_IF_NOT_FOUND”。
- 如果没有找到结果,该方法应该返回一个空列表还是Null?我想要的行为是收到一个空列表。
- 为什么方法调用返回
Null而不是 size() 2 的List<Tag>?
【问题讨论】:
-
maxTags未使用,或者这不是您实际执行的查询。
标签: java spring jpa spring-data spring-data-jpa