CrudRepository REST 响应中的重复 _links 键

Duplicate _links key in CrudRepository REST response

问题: CrudRepository return 错误的 JSON 具有重复 _links 键的响应

{"_links" : { },  
 "_embedded" : {
    "skills" : [ {
      "name" : "REST",
      "_links" : { }, <----------- Empty Links
      "_embedded" : { },
      "_links" : { <-------------- Usefull Links
        "self" : {
          "href" : "http://localhost:8081/api/skills/1",
          "templated" : false
        }
      }
    } ]   } }

使用过类: 存储库: 导入 org.springframework.data.repository.CrudRepository;

public interface SkillRepository extends CrudRepository<Skill, Long> {}

实体:

@Entity
@Getter
@Setter
public class Skill {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    private String name;

}

如果我包含 jackson-databind 就会出现问题。

        <artifactId>jackson-databind</artifactId>
        <version>2.6.0</version> 

spring-hateoas 的最新版本包括 jackson-databind 2.4.6。

在 jackson-databind 2.6.0 JsonSerialize.Inclusion 中已弃用; JsonInclude 应该改用。来自 spring-hateoas (ResourcesMixin, ResourceSupportMixin & LinkMixin) 的 Mixin 类 使用显然被忽略的 JsonSerialize.Inclusion

解决方案:使用jackson-databind 2.5.4(或更低版本)直到jackson版本在spring-hateoas中更新。