当前位置: 首页 > 知识库问答 >
问题:

Spring数据REST-使用实体列表Java HATEOAS无法识别的字段“\u embedded”

宋铭
2023-03-14

我正在尝试使用以下REST HAL响应中的实体列表:

    {
  "_embedded" : {
    "posts" : [ {
      "branch" : 1,
      "article" : "aaaaaaa",
      "featuredImage" : "aaaaaaa",
      "authorId" : 1,
      "datePublished" : "2020-05-05T09:11:13.336+0000",
      "commentsEnabled" : true,
      "enabled" : false,
      "views" : 0,
      "snippetTitle" : null,
      "snippetDescription" : null,
      "comments" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8081/posts/1"
        },
        "post" : {
          "href" : "http://localhost:8081/posts/1"
        },
        "categories" : {
          "href" : "http://localhost:8081/posts/1/categories"
        }
      }
    }, {
      "branch" : 1,
      "article" : "aaaaaaa",
      "featuredImage" : "aaaaaaa",
      "authorId" : 1,
      "datePublished" : "2020-05-05T10:45:15.999+0000",
      "commentsEnabled" : true,
      "enabled" : false,
      "views" : 0,
      "snippetTitle" : null,
      "snippetDescription" : null,
      "comments" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8081/posts/3"
        },
        "post" : {
          "href" : "http://localhost:8081/posts/3"
        },
        "categories" : {
          "href" : "http://localhost:8081/posts/3/categories"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8081/posts/search/byAuthorId?authorId=1&page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 3,
    "totalPages" : 1,
    "number" : 0
  }
}

我想将这些实体映射到此类:

@Setter
@Getter
@AllArgsConstructor
public class Post {
  private int id;
  private int branch;
  private String article;
  private Date datePublished;
  private String featuredImage;
  private Boolean commentsEnabled;
  private Boolean enabled;
  private int views;
  private String snippetTitle;
  private String snippetDescription;
}

然而,我不断发现错误:

无法识别的字段“_embedded”(类org.springframework.hateoas.PagedModel),未标记为可忽略(3个已知属性:“链接”、“页面”、“内容”])

使用此代码:

  ObjectMapper mapper = new ObjectMapper();
  MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();

  messageConverter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/hal+json"));
  messageConverter.setObjectMapper(mapper);

  ResponseEntity<PagedModel<Post>> responseEntity =
    new RestTemplate(Arrays.asList(messageConverter)).exchange(uri, HttpMethod.GET, HttpEntity.EMPTY, new ParameterizedTypeReference<PagedModel<Post>>() {});

版本包括:

Jackson数据绑定版本:2.11.0

Spring-hateoas版本:1.0.5。发布

任何帮助都将不胜感激!

共有1个答案

方德宇
2023-03-14

响应结构看起来像PagedResources

使用org.springframework.hateoas.PagedResourcesParameterizedType参考

ResponseEntity<PagedResources<Post>> responseEntity =
    new RestTemplate(Arrays.asList(messageConverter)).exchange(uri, HttpMethod.GET, HttpEntity.EMPTY, new ParameterizedTypeReference<PagedResources<Post>>() {});

 类似资料:
  • 我有一个名为员工部的实体如下 我有一个Spring数据存储库,定义如下 此外,我注册了一个转换器,用于将字符串转换为EmployeeDepartmentPK。 现在,对于一个由ID employeeID=“abc123”和departmentCode=“JBG”限定的实体,我希望在调用SDR接口时使用的ID是abc123u JBG。例如http://localhost/EmployeeDepart

  • 我有一个具有此结构的 xsd 文件: 所以,我已经用jaxb2生成了java类: Accesso 类和其他类也是如此。这是我尝试反序列化的xml文件的一个例子: 但是当我要反序列化某个xml文件时,我得到了这个错误: com.fasterxml.jackson.databind.exc.未识别的字段Accesso(类com.xx.yy.FlsProSoc),未标记为不可忽略(一个已知的属性:内容]

  • 问题内容: 我遇到反序列化问题: 这是我的课: 我要反序列化的JSON是: 我得到这个异常: 我不想添加: 因为我想得到ResObj … 如果我添加了注释,它将通过,但会将其设置为null ..这是我不想要的。 问题答案: 如果您不想在bean中使用设置器,而只使用字段和获取器,则可以使用ObjectMapper的可见性检查器来允许字段可见。像下面这样

  • 问题内容: 我有一个名为EmployeeDepartment的实体,如下所示 我有一个如下定义的Spring Data Repository 此外,我注册了一个转换器,以将String转换为EmployeeDepartmentPK。 现在,对于一个由ID employeeID =“ abc123”和departmentCode =“ JBG”限定的实体,我希望在调用SDR接口时使用的ID为abc1

  • 我正在开发与我的服务器通信的web应用程序。这种通信是通过Spring框架和react JS完成的。我正在发送一个请求,请求我的服务器读取json,但是我得到了这个错误 错误反应控制台: 未捕获(在promise中)错误:请求失败,状态代码为400

  • 问题内容: 我有三个实体:父级,子级和一些参考: 父母 儿童 参考 及其存储库: 在此之前,我坚持了几个有参考文献的孩子。然后,我创建了一个有一个孩子的新父母: 并成功获得状态201已创建。但是,当我尝试将另一个孩子添加到 parent2时 (用PATCH更新): 我有一个错误: 如果我从子级删除到参考实体的链接: 一切正常 -child4 已成功添加到 parent2中 。 您能指出我如何正确引