Spring 数据剩余 - 嵌入式实体未在 POST 上反序列化
Spring Data Rest - Embedded entity not deserialized on POST
我有一个 spring 数据休息项目设置了持久性实体 Employer
和 Employee
。 Employee
具有定义为 Employer
的 @ManyToOne
关系,如下所示:
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne
private Employer employer;
...
}
当我有一个单元测试坚持一个 Employee
其中有一个 Employer
对象时,这很有效。但是,当我向端点提交带有 JSON 正文的 POST 请求时,我注意到反序列化的 Employer
信息为空...
TRACE 16948 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.data.rest.webmvc.RootResourceInformation@71b498f9, Resource { content: Employee [id=1, ename=John, surname=Snow, jobTitle=Crow, companyName=Wall, companyContact=Warden of North, employeeNumber=, costCentre=, employer=null], links: [] }, org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler@5e618dcb, */*]
这告诉我我的 Employee
JSON 没有被正确反序列化。是否需要添加一些配置才能自动发生这种情况,或者我是否需要创建自己的反序列化器来处理这种情况?
看到仍然没有答案 :) 我做了问题中讨论的解决方法 - 我创建了一个自定义反序列化器。
我有一个 spring 数据休息项目设置了持久性实体 Employer
和 Employee
。 Employee
具有定义为 Employer
的 @ManyToOne
关系,如下所示:
@Entity
@Table(name = "EMPLOYEE")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne
private Employer employer;
...
}
当我有一个单元测试坚持一个 Employee
其中有一个 Employer
对象时,这很有效。但是,当我向端点提交带有 JSON 正文的 POST 请求时,我注意到反序列化的 Employer
信息为空...
TRACE 16948 --- [nio-8080-exec-1] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.data.rest.webmvc.RootResourceInformation@71b498f9, Resource { content: Employee [id=1, ename=John, surname=Snow, jobTitle=Crow, companyName=Wall, companyContact=Warden of North, employeeNumber=, costCentre=, employer=null], links: [] }, org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler@5e618dcb, */*]
这告诉我我的 Employee
JSON 没有被正确反序列化。是否需要添加一些配置才能自动发生这种情况,或者我是否需要创建自己的反序列化器来处理这种情况?
看到仍然没有答案 :) 我做了问题中讨论的解决方法 - 我创建了一个自定义反序列化器。