【发布时间】:2013-04-11 21:43:14
【问题描述】:
我正在使用 Jersey 并且希望将 POST 作为一个实体。然而 thst POST 也将包含 UUID 用于其关系之一:
球衣资源:
@POST
public WorkstationEntity save (WorkstationEntity workstationEntity) {
//WorkflowProcessEntity workflowProcessEntity = workflowProcessService.findByUUID();
workstationService.save(workstationEntity);
return workstationEntity;
}
如何调整以下映射,使其能够识别关系并正确保存?目前workflow_process_id 保存时为NULL,我必须手动查询实体。
正在发布的 JSON 是...{name: Workstation 1; workflow_process_id: 1}
private WorkflowProcessEntity workflowProcess;
@ManyToOne
@JoinColumn(name = "workflow_process_id", referencedColumnName = "id")
public WorkflowProcessEntity getWorkflowProcess() {
return workflowProcess;
}
public void setWorkflowProcess(WorkflowProcessEntity workflowProcess) {
this.workflowProcess = workflowProcess;
}
工作站服务
@Transactional
public void save(WorkstationEntity workstationEntity) {
workstationRepository.save(workstationEntity);
}
【问题讨论】:
-
你能显示
workstationService的代码吗?你使用的是 Hibernet 还是简单的 jdbc 或任何其他 orm 工具 -
我很确定我可以帮助你,因为我广泛使用了 jpa、jersey 和 jackson,但我不明白你的问题。你想完成什么。
-
@ChrisHinshaw - 当 json 映射到对象时,是否可以将“user:{id:4}”映射为 JPA 用户实体,而不是具有填充 ID 列的用户对象?
-
是的,但您必须使用实体管理合并操作将实体重新附加到实体管理器。 AFAIK 这是从 POJO 到托管实体的推荐方式。您可能可以通过为您的实体使用 jackson mixin 来自动执行此操作。