gpt4 book ai didi

在存储库中带有或不带有显式声明的 Spring Data Rest 投影

转载 作者:行者123 更新时间:2023-12-02 11:57:56 24 4
gpt4 key购买 nike

创建 SDR 投影和然后创建有什么区别

(i) 在相应的存储库中明确声明 -

@RepositoryRestResource(excerptProjection = UserSummaryProjection.class)
public interface UserRepository extends JpaRepository<User, Integer> { ..
}

(ii) 未在存储库中显式定义投影

我发现,当在 Repository 中显式声明 Projection 时,无论调用 findAll 或 findByID ,都会显示该实体的投影。

但是,如果未声明,则用户可以选择/不使用它们,因此默认情况下会显示所有字段。

一些例子 -

我还发现,当定义投影时,链接就会消失。例如 -有 UserLanguage 和 RefLanguage ,比如说,有 2 个存储库 UserLanguageRepository 和 ResfLanguageRepository ,然后还有 RefLangSummaryProjection

UserLanguage -> ManytoOne -> REFLanguageRefLanguage -> OneToMany -> UserLanguage

因此,转到 URL/userLanguages 或/userLanguages/{id} 显示 RefLanguage 的嵌入数据,其中字段来自 RefLangSummaryProjection,并且指向 RefLang 的链接已消失。这可能是预料之中的,但是我不喜欢为 REFLangSummaryProejction 生成的查询,它仍然选择所有列

最佳答案

预测基本上有两个方面:

  1. 您创建投影以使客户端能够看到资源的不同 View 。投影被定义为接口(interface),命名,然后通过请求参数暴露给客户端。客户现在可以准确选择已注册的投影之一,也可以完全不选择任何一个。

  2. 您可以将已注册的投影之一提升为摘录投影(属性名称由此而来)。如果声明,它将自动用在表示中出现相关资源的地方。对于默认的 HAL 格式,_embedded 子句中呈现的所有内容都是这种情况。

关于在存储库中带有或不带有显式声明的 Spring Data Rest 投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27501076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com