【发布时间】:2014-10-23 03:57:52
【问题描述】:
我有一个带有 @JsonView 注释的实体(使用 lombok)。
@Entity
@Table(name = "`order`")
@Getter
@Setter
@ToString
@Description("Приказ")
public class Order extends Auditable {
private static final long serialVersionUID = -1299630493411381582L;
@JsonView(JsonViews.OrderAdvancedSearch.class)
@ManyToOne
private School school;
@Column(length = 50)
private String number;
}
有一个带有@JsonView 注解的控制器方法。
@Secured(value = {"ROLE_AUTHENTICATED_USER"})
@RequestMapping(value = "/order", method = RequestMethod.GET, headers = {"Content-Type=application/json"})
@JsonView(JsonViews.OrderAdvancedSearch.class)
@ResponseBody
public ResponseEntity<Order> getOrder(HttpServletRequest request) throws IOException, DnevnikException, RestException {
Order order = orderRepository.findOne(292L); // just for example
return new ResponseEntity<>(order,HttpStatus.OK);
}
我预计输入将只包含带有@JsonView 注释的字段。 但我有很多领域。
我正在尝试调试 spring 和 jackson 源。 在 com.fasterxml.jackson.databind.SerializationConfig 我看到活动视图是我的类 JsonViews.OrderAdvancedSearch.class 但是在 com.fasterxml.jackson.databind.ser.std.BeanSerializerBase 变量中filteredProps 总是具有我实体的所有属性。
【问题讨论】:
-
您找到答案了吗?我对 Spring 4.1 RC2 和 Jackson 2.3.2 有同样的问题。当我直接使用 ObjectMapper 时,我可以让 @JsonView 注释工作,但不能通过 Spring 自动工作。
标签: java json spring jackson json-view