将 ResourceSupport 迁移到 RepresentationModel
Migrate ResourceSupport to RepresentationModel
我有这段代码,我想将其迁移到最新的 Spring hateoas 版本。我试过这个:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
if (getId() != null) {
getLinks().remove(getId());
}
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
我收到错误无法解析方法 'getId' in 'TransactionResource'
和 Cannot resolve method 'remove' in 'Links'
你知道我要如何解决这个问题吗?
我认为在较新的 Spring Hateoas 版本中,您可以使用以下代码获得类似的结果:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
if (this.hasLink(IanaLinkRelations.SELF)) {
this.getLinks().without(IanaLinkRelations.SELF);
}
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
我还没有测试过,但可能上面的代码可以像这样简化:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
this.getLinks().without(IanaLinkRelations.SELF);
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
请注意,主要更改与RepresentationModel
and in the Links
中提供的方法的使用有关。
如我所说,请注意我尚未测试代码。我主要关心的是 this.getLinks().without(IanaLinkRelations.SELF);
return 一个新的 Links
实例,它可能不会 代替 与相关联的现有实例RepresentationModel
,因此您可能需要 merge
结果。请考虑到这一点。
我有这段代码,我想将其迁移到最新的 Spring hateoas 版本。我试过这个:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
if (getId() != null) {
getLinks().remove(getId());
}
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
我收到错误无法解析方法 'getId' in 'TransactionResource'
和 Cannot resolve method 'remove' in 'Links'
你知道我要如何解决这个问题吗?
我认为在较新的 Spring Hateoas 版本中,您可以使用以下代码获得类似的结果:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
if (this.hasLink(IanaLinkRelations.SELF)) {
this.getLinks().without(IanaLinkRelations.SELF);
}
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
我还没有测试过,但可能上面的代码可以像这样简化:
@JsonInclude(Include.NON_NULL)
public class TransactionResource extends RepresentationModel {
@JsonProperty("id")
private UUID uuid;
public void setUuid(UUID uuid) {
// Remove the hateoas ID (self referential link) if exists
this.getLinks().without(IanaLinkRelations.SELF);
add(linkTo(methodOn(TransactionController.class).lookup(uuid, null))
.withSelfRel()
.expand());
this.uuid = uuid;
}
......................
}
请注意,主要更改与RepresentationModel
and in the Links
中提供的方法的使用有关。
如我所说,请注意我尚未测试代码。我主要关心的是 this.getLinks().without(IanaLinkRelations.SELF);
return 一个新的 Links
实例,它可能不会 代替 与相关联的现有实例RepresentationModel
,因此您可能需要 merge
结果。请考虑到这一点。