Spring JPA存储库,选择包含param列表中所有元素的数据

时间:2016-04-21 12:44:34

标签: java spring hibernate spring-data spring-data-jpa

我有春天的JPA Repository Interface:

public interface ElementLogRepository extends JpaRepository<ElementLog, String> 

有查询:

@Query("SELECT pl.element.id FROM ElementLog pl WHERE pl.tags IN :tags)")
public List<ElementLog> findLatestElementLogsByTags(@Param("tags") List<Tag> tags);

当我调用方法findLatestElementLogsByTags时,我会收到包含ElementLog中任何标记的所有List<Tag> tags

如何修改查询以获取包含ElementLog所有标记的所有List<Tag> tags

提前谢谢。

1 个答案:

答案 0 :(得分:1)

首先,我认为ElementLog And Tag与OneToMany有关。

SELECT log FROM ElementLog log WHERE log.id IN (
     SELECT DISTINCT pl.id FROM ElementLog pl join pl.tags as t where t in :tags group by pl.id having count(pl.id) == :tags.size()
)

我认为与匹配大小相比,hql应该是正确的,我实际上没有跑过来。