@RestResource(exported = false)被忽略

时间:2014-09-16 07:18:35

标签: json spring spring-data-rest

与标题一样 - 我的@RestResource(exported = false)在字段上被忽略。 Spring数据休息仍然想从中生成json,我想暂时跳过它,因为在WorkflowEvent中更改rel并没有给我任何信息。

 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "submission")
@OrderBy("date desc")
@RestResource(exported = false)
private List<WorkflowEvent> events = new ArrayList<WorkflowEvent>();

我明白了:

{"timestamp":1410850806347,"status":500,"error":"Internal Server Error","exception":"org.springframework.http.converter.HttpMessageNotWritableException","message":"Could not write JSON: Detected multiple association links with same relation type! Disambiguate association @javax.persistence.JoinColumn(insertable=true, unique=false, referencedColumnName=, columnDefinition=, name=submission_id, updatable=true, nullable=true, table=, foreignKey=@javax.persistence.ForeignKey(name=, value=CONSTRAINT, foreignKeyDefinition=)) @javax.persistence.ManyToOne(fetch=EAGER, cascade=[], optional=true, targetEntity=void) @org.springframework.data.rest.core.annotation.RestResource(description=@org.springframework.data.rest.core.annotation.Description(value=), path=, exported=false, rel=) private mypackage.MyClass mypackage.WorkflowEvent.myclass using @RestResource!; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Detected multiple association links with same relation*
当我评论这个领域时,它会起作用。

我的版本:

\- org.springframework.data:spring-data-rest-webmvc:jar:2.1.4.RELEASE:compile
[INFO] |     \- org.springframework.data:spring-data-rest-core:jar:2.1.4.RELEASE:compile
[INFO] |        +- org.springframework.hateoas:spring-hateoas:jar:0.16.0.RELEASE:compile

1 个答案:

答案 0 :(得分:11)

@RestResources仅在指向托管资源的域属性上受支持。因此,如果您不通过Spring Data REST托管存储库公开WorkflowEvent,则注释无论如何都不会产生任何影响。在这种情况下,只需使用@JsonIgnore让Jackson不再渲染该属性。