目前有如下两个实体类,其中 Group
单向多对一 User
@Entity
public class User {
@Id
private String id;
}
@Entity
public class Group {
@Id
private String id;
@JoinColumn(name = "user_id")
@ManyToOne
private User user;
}
在 GroupController
中通过 @RequestBody
接收参数并反序列化来创建 Group
:
@RestController
@RequestMapping("/group")
public class SubscriptionController {
@Resource
private GroupService groupService; // 包含增删改查的实现
@PostMapping
public Subscription createGroup(@RequestBody Group group) {
return groupService.createGroup(group);
}
}
但此时如果前端传入 userId
是否无被正确实例化 User
对象的:
{
"userId": "testUser"
}
需要按以下方式传参才可以被正确实例化:
{
"user": { "id": "testUser" }
}
如果想要通过 userId
实例化,目前需要通过以下方式实现:
@RestController
@RequestMapping("/group")
public class SubscriptionController {
@Resource
private GroupService groupService; // 包含增删改查的实现
@PostMapping
public Subscription createGroup(@RequestBody Map<String, String> map) {
User user = new User();
user.setId(map.get("userId"));
Group group = new Group();
group.setUser(user);
return groupService.createGroup(group);
}
}
不知道 jpa 里有没有提供一些比较便捷的方式实现通过 userId
实例化被映射的 User
?
目前找到一种方式可以不脱离 jpa 的机制实现: