nKo*_*ito 18 spring spring-mvc spring-data spring-data-rest
我做了一个应该暴露嵌套实体的投影:
@Projection(name = "inlineBusiness", types = { UserModel.class })
public interface InlineBusinessUserModelProjection {
String getUsername();
String getFirstName();
String getLastName();
Date getBirthdate();
String getEmail();
BusinessModel getBusiness();
}
Run Code Online (Sandbox Code Playgroud)
和服务存储库:
@RepositoryRestResource(collectionResourceRel = "users", path = "users",
excerptProjection = InlineBusinessUserModelProjection.class)
public interface UserRepository extends BaseDAO<UserModel> {..}
Run Code Online (Sandbox Code Playgroud)
因为/users
它工作正常,业务领域暴露与嵌套实体,但当我调用/users/1
- 没有,也所有自定义方法..似乎投影不参与任何方法除了/users
任何想法?
Oli*_*ohm 33
这是按设计工作的.只要UserModel
在_embedded
子句中使用目标类型的实例(在您的情况下),就会使用摘录投影.因此,摘录是在资源本身未呈现但指向的任何地方使用的某种预览.这通常来自收集资源或关联.
默认情况下,在项目资源上使用摘录投影从另一个角度来看并不合理:摘录投影是某些域对象上的只读视图.如果默认情况下为项目资源返回该视图,客户端将如何知道必须发送哪些数据来更新资源.根据定义,无法简单地获取,修改和使用为摘录投影创建的JSON文档来发送PUT
更新资源的请求.
如果要将投影应用于项目资源,请projection
使用投影的名称填充URI模板变量.
编辑:如果您手动选择投影时未应用投影,请确保InlineBusinessUserModelProjection
实际注册为一般用途.确保类型位于相同的包或子包中UserModel
.或者手动注册投影通过RepositoryRestConfiguration.projectionConfiguration().addProjection(…)
.手动配置使@Projection
投影类型的使用过时.
在Spring Data REST参考文档中阅读有关此主题的更多信息.
归档时间: |
|
查看次数: |
9478 次 |
最近记录: |