我有一个名为items的表,它与一个名为tag的表连接在一起。我希望能够搜索包含指定标签列表的所有项目。我所拥有的正在工作,但是即使该项目具有更多关联的标签,它也只会返回查询中列出的标签。如果它具有我要搜索的标签集,我想将所有相关标签带回该项目
@Query("select d from DataItem d left join fetch d.tags t where t in (:tags)" )
Set<DataItem> findDistinctByTags(@Param("tags") Set<Tag> tags);
如果我有一个带有标签foo和bar的项目,并搜索带有foo标签的项目,我会找回一个正确的项目,但它只会带有foo的标签。我也想在查询中返回bar标签。
答案 0 :(得分:1)
尝试以下语句:
@Query("select d from DataItem d left join fetch d.tags t where d.tags in (:tags)" )
例如,使用SQL
并检查生成的查询,这也是为spring应用程序打开spring.jpa.show-sql=true
日志记录的一种好方法。它会帮助您进行故障排除。