我有春天的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
?
提前谢谢。
答案 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应该是正确的,我实际上没有跑过来。