我做了一个应该暴露嵌套实体的投影:
@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> {..}
for /users
它工作正常,业务领域通过嵌套实体公开,但是当我打电话时/users/1
- 什么都没有,还有所有自定义方法。似乎投影不涉及任何方法,除了/users
有任何想法吗?
这按设计工作。每当目标类型的实例(UserModel
在你的情况下)被用在_embedded
条款。因此,摘录是在资源本身未呈现但被指向的任何地方使用的某种预览。这通常是收藏资源或协会的情况。
从另一个角度来看,默认情况下在项目资源上使用摘录投影并没有真正意义:摘录投影是某些域对象的只读视图。如果默认情况下返回项目资源的视图,客户端如何知道必须发送哪些数据才能更新资源。为摘录投影创建的 JSON 文档不能简单地获取、修改并用于发送PUT
根据定义,请求更新资源。
如果要将投影应用于项目资源,请填充projection
带有投影名称的 URI 模板变量。
编辑:如果您手动选择投影,则如果投影未应用,请确保InlineBusinessUserModelProjection
实际上已注册用于一般用途。确保该类型位于相同的包或子包中UserModel
.或者通过手动注册投影RepositoryRestConfiguration.projectionConfiguration().addProjection(…)
。手动配置使用@Projection
关于投影类型已过时。
阅读有关此主题的更多信息Spring Data REST 参考文档 http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)