如何使用Spring Data Rest在GET调用中获取自引用对象

时间:2016-11-29 07:10:04

标签: java spring-boot spring-data-rest

我正在使用Spring 1.3.3,即使它不为null,我也无法使用GET在Spring Data Rest Response中获取Self Referencing对象。

例如

我的表:

CREATE TABLE `employee` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(40) NOT NULL,
  `parent_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `FK_employee_parent` (`parent_id`),
  CONSTRAINT `FK_employee_parent` FOREIGN KEY (`parent_id`) REFERENCES `employee` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8057 DEFAULT CHARSET=latin1

响应:

{
"id": 1,
"name": "Test Employee",
"_links": {
"self": {
"href": "http://localhost:8081/employee/1"
},
"employee": {
"href": "http://localhost:8081/employee/1"
},
"parent": {
"href": "http://localhost:8081/employee/1/parent"
}
}
}

但我需要名称字段旁边的parent_id,而不是“链接”下的。

  1. 有没有办法在Employee对象中返回parentId(下一步 这个名字)?
  2. OR

    1. 我是否需要添加投影才能返回     自引用对象?

1 个答案:

答案 0 :(得分:-1)

我建议在你的春季休息时使用杰克逊。然后,您可以轻松地向域对象添加注释,以将链接重命名为parent_id。

 @JsonProperty("parent_id")

您还需要在类

上添加两个注释
@JsonSerialize
@JsonInclude

最佳实践实际上不是直接使用域对象,而是在处理此问题之间使用pojo。因此,域对象数据将被复制到该pojo,您将只显示要在其余响应中显示的内容。