在Hibernate中持久化从Jackson Json获取的实体
下面是我的情景 我有两个实体 1) 客户 2) 计划 它们之间的关系是一个客户提供多个项目。我在Hibernate中创建了两个实体,如下所示在Hibernate中持久化从Jackson Json获取的实体,json,hibernate,jpa,jackson,Json,Hibernate,Jpa,Jackson,下面是我的情景 我有两个实体 1) 客户 2) 计划 它们之间的关系是一个客户提供多个项目。我在Hibernate中创建了两个实体,如下所示 @Entity @Table(name="client") public class Client extends BaseEntity<Long> { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long clientId; ....
@Entity
@Table(name="client")
public class Client extends BaseEntity<Long> {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long clientId;
......
......
}
@Entity
@Table(name="Project")
public class Project extends BaseEntity<Long>{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long projectId;
.......
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "clientId")
private Client client;
.......
}
我的客户端(父实体)已在数据库中持久化。我必须将现有的clientId引用到我正在插入的新项目
我使用Jackson作为Json库
插入项目时,是否有任何方法可以自动映射/获取客户实体?什么是“自动”意思 如果
Project
是客户机-项目关系的拥有方(根据您的需求可能应该是这样),您可以调用Project.setClient(entityManager.getReference(client.class,id))
(或者Project.setClient(session.load(client.class,id))
如果您使用的是Hibernate会话)避免从数据库加载客户端
实体的整个状态
@RestController
@RequestMapping("/project")
public class ProjectController {
@Autowired
private ProjectService projectService;
@RequestMapping(value = "/add", method = RequestMethod.POST)
public ResponseEntity<String> add(@RequestBody Project project, BindingResult result) throws JsonProcessingException {
........
projectService.saveProject(project);
....
}
}
{
"name": "Project 1",
"description": "client Project 1",
"startDate": "2012-07-21 12:11:12",
"endDate": "2017-07-21 12:11:12",
"totalPlannedReleases": 20,
"projectKey": "MAQ",
"avatar":"Not Available",
"client": {"clientId":1}
}