香草实体用户 -为什么Spring HATEOAS返回导致JSON反序列化异常的重复链接?
public class User implements Serializable {
private static final long serialVersionUID = 262950482349139355L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "FIRST_NAME", nullable = false, unique = false)
@Convert(converter = NameConverter.class)
private String firstName;
@Column(name = "LAST_NAME", nullable = false, unique = false)
@Convert(converter = NameConverter.class)
private String lastName;
@Column(name = "PHONE_NUM", nullable = false, unique = false)
@Convert(converter = PhoneNumberConverter.class)
private String phoneNum;
@Column(name = "EMAIL", nullable = true, unique = false)
@Convert(converter = OptionalStringConverter.class)
private Optional<String> email;
}
搜索与主机名导致URL变了 - 现在
{
"_links" : {
"self" : {
"href" : "http://hostname/users/search/findByLastName?lastName=doe{&page,size,sort}",
"templated" : true
}
},
"_embedded" : {
"users" : [ {
"firstName" : "John",
"lastName" : "Doe",
"phoneNum" : "111-111-1111",
"email" : null,
"_links" : { },
"_embedded" : { },
"_links" : {
"self" : {
"href" : "http://hostname/users/1",
"templated" : false
}
}
} ]
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
编辑 2个_links:
重复的链接不存在,当资源访问它自己的。但是,当客户(我的情况下是一个微服务)使用RestTemplate
发出请求时,响应会返回2 _links
,如上所示。我使用Spring Data JPA,Spring Data Rest,Spring HATEOAS和Spring Cloud。我使用Spring Data JPA,Spring Data Rest,Spring HATEOAS和Spring Cloud。这是我的Github上的link to the project。
完全披露:我已经在Spring HATEOAS Github上提交了一个问题。
请告诉我们你的代码,你组装的资源。实体和预期的结果是不够的。我们在自己的软件中做了一个非常类似的事情,它很有用。 –
@ThomasUhrig我不组装资源。我正在使用Spring JPA为我做这件事。我已经更新了我的帖子,澄清了这一点,并提供了一段代码链接。 –
我不想通过你的GitHub仓库来修复你的东西。请发布相关代码。实体和结果在这种情况下不相关。如果我会浏览你的回购 - 理论上 - 我会说你用一个'PersistentEntityResourceAssembler'在你的控制器中组装你的资源。但是在你做之前,你会手动链接到UserSearchResult。所以,是的,你组装的资源,你做错了。所以显示代码。 –