gpt4 book ai didi

spring - 为什么没有自动为 Spring Data REST 项目资源应用摘录投影?

转载 作者:IT老高 更新时间:2023-10-28 13:51:19 41 4
gpt4 key购买 nike

我做了一个应该暴露嵌套实体的投影:

@Projection(name = "inlineBusiness", types = { UserModel.class })
public interface InlineBusinessUserModelProjection {

String getUsername();

String getFirstName();

String getLastName();

Date getBirthdate();

String getEmail();

BusinessModel getBusiness();
}

以及服务存储库:

@RepositoryRestResource(collectionResourceRel = "users", path = "users",
excerptProjection = InlineBusinessUserModelProjection.class)
public interface UserRepository extends BaseDAO<UserModel> {..}

对于 /users 它工作正常,业务字段与嵌套实体一起公开,但是当我调用 /users/1 时 - 什么都没有,还有所有自定义方法。 . 似乎除了 /users 之外的任何方法都没有涉及投影有任何想法吗?

最佳答案

按设计工作。每当在 _embedded 子句中使用目标类型的实例(在您的情况下为 UserModel)时,都会使用摘录投影。因此,摘录是在资源本身未呈现但指向的任何地方使用的某种预览。这通常是收集资源或协会的情况。

从另一个角度来看,默认情况下在项目资源上使用摘录投影并没有真正意义:摘录投影是某些域对象的只读 View 。如果默认情况下为项目资源返回该 View ,客户端如何知道它必须发送哪些数据来更新资源。为摘录投影创建的 JSON 文档不能简单地被获取、修改并用于发送 PUT 请求以更新资源 - 根据定义。

如果您想对项目资源应用投影,请使用投影名称填充 projection URI 模板变量。

编辑:如果您手动选择投影没有得到应用,请确保 InlineBusinessUserModelProjection 实际上已注册为一般用途。 确保类型位于 UserModel 的相同包或子包中。 或者通过 RepositoryRestConfiguration.projectionConfiguration().addProjection(... )。手动配置使得在投影类型上使用 @Projection 已过时。

Spring Data REST reference documentation 中阅读有关此主题的更多信息.

关于spring - 为什么没有自动为 Spring Data REST 项目资源应用摘录投影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220333/

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