域
Driver
可以有一个User
,但不需要。关联是无向的。
class Driver {
private String firstName;
private String lastName;
@OneToOne
private User user;
// ...
}
class User {
private String login;
private String email;
// ...
}
用例:
1.为Driver
创建User
和Driver
。
2.为User
分配另一个Driver
。
哪种解决方案是最好的?
使用案例1:
选项1:
使用1个json创建Driver
和User
:
{
"DriverDto": {
"firstName": "Adam",
"lastName": "Kowalski",
"UserDto": {
"login": "mylogin",
"email": "myemail@com.pl"
}
}
}
然后服务检查是否存在使用此登录名的User
(如果不存在),然后保存。下一服务将User
分配给Driver
并保存Driver
。
选项2:
首先创建User
:
{
"UserDto": {
"login": "mylogin",
"email": "myemail@com.pl"
}
}
然后创建Driver
并将User
传递给Driver
仅凭User
的ID:
{
"DriverDto": {
"firstName": "Adam",
"lastName": "Kowalski",
"UserDto": {
"id": 1
}
}
}
使用案例2:
选项1:
要将其他用户分配给驱动程序,必须使用json发出放置请求:
{
"DriverDto": {
"firstName": "Adam",
"lastName": "Kowalski",
"UserDto": {
"login": "anotherlogin",
"email": "anotheremail@com.pl"
}
}
}
然后服务检查用户是否存在(如果不存在),然后将其保存并为驱动程序设置新用户并保存新驱动程序。
选项2:
与方法1类似,但我们不传递整个User
,而是仅传递User
的ID:
{
"DriverDto": {
"firstName": "Adam",
"lastName": "Kowalski",
"UserDto": {
"id": 2
}
}
}
选项3:
发出新的http请求:
...api/drivers/id=1/assignuser/id=1
选项4:
发出新的http请求:
...api/drivers/id=1/assignuser
并在json中传递User
的ID:
{
"UserDto": {
"id": 1
}
}