【问题标题】:Spring JPA repository, select data which contains all elements from param listSpring JPA 存储库,从参数列表中选择包含所有元素的数据
【发布时间】:2016-04-21 12:44:34
【问题描述】:

我有 spring JPA 存储库接口:

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&lt;Tag&gt; tags 的任何标签。

如何修改查询以获取包含来自List&lt;Tag&gt; tags 的所有标签的所有ElementLog

提前谢谢你。

【问题讨论】:

  • 所以基本上不是ElementLog的列表每个都有一个标签,你想要一个ElementLog和所有标签的列表?

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


【解决方案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应该是正确的,我实际上并没有跑过去。

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多