hibernate 返回jpaRepository中的Map

hgc7kmma  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(214)

我有一个UUID的列表,它被输入到仓库中的方法参数中。我需要返回一个Map〈UUID,Boolean〉map,它将把列表中的所有值复制到键中。如果列表中的值存在于entity.get Service Id()中,那么map的值被设置为true,否则为false。如何做到这一点?

vh0rcniy

vh0rcniy1#

如果使用spring-data-jpa,则可以使用@Query注解
我建议您只查询结果为true的值,然后基于该结果构建Map,而不是立即进行复杂得多的查询。

@Query("select ?1 from YourEntityHere yeh where yeh.id = ?1")
  List<Uuid> findServiceUuids(List<UUID> uuids);

然后在调用层:

private Map<UUID, Boolean> getMapUuidAndFoundStatus(List<UUID> uuids) {
        List<UUID> foundUuids = repository.findServiceUuids(uuids);
        return uuids.stream().collect(Collectors.toMap(Function.identity(), foundUuids::contains));
    }

有一种方法可以保证在不使用访问层的情况下在一个查询中完成此操作,但这很可能会降低可读性、性能和可重用性。

相关问题