Как связать моего нового пользователя объекта с объектом роли в моем приложении загрузки Spring, когда я получаю сообщение запроса с json / приложением, в котором есть все данные для нового пользователя? Каков лучший подход (сообщить роль в json)? Если да, то как json должен относиться к информации о ролях?
Я постараюсь объясниться. Во-первых, извините, я не являюсь носителем английского языка.
Я хочу создать нового пользователя объекта, отображающего json, полученный из сообщения HTTP-запроса. Проблема в том, что у меня есть внутренний объект из моей модели с именем role. Роли всегда либо общие, либо администратор. Затем я хочу сослаться на уже созданный объект роли.
Итак, я хочу знать, как указать роль моего пользователя. Следует учитывать, что модель не может быть изменена из-за некоторых внутренних ограничений команды. Я не знаю, является ли правильный подход к успокоению отправкой информации о ролях в json. Как бы вы справились с этой задачей?
Мой код
Контроллер класса
@RestController
public class UserController {
@RequestMapping(method=RequestMethod.POST, value = "/users", produces = "application/json")
public @ResponseBody ResponseEntity<EntityUser> create(@Validated @RequestBody EntityUser user)
{
return new ResponseEntity<>(userService.add(user), HttpStatus.CREATED);
}
}
Класс обслуживания
@Service
public class UserService {
public EntityUser add(EntityUser user)
{
if (userRepository.findByName(user.getName()) == null)
return userRepository.save(user);
return null;
}
}
Мой простой объект EntityUser (ему сопоставляется json).
@Entity
public class EntityUser {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_sequence")
private long id;
@Column(name = "name")
@NotNull
private String name;
@Column(name = "email", unique = true)
@NotNull
private String email;
@ManyToOne(fetch=FetchType.EAGER)
// @NotNull
private EntityRole role;
...
}
и, наконец, мой класс EntityRole
@Entity
public class EntityRole {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "role_sequence")
private long id;
@NotNull
private String label;
@NotNull
private String permission;
...
}

Почему вы не принимаете UserCreateRequest, который включает информацию о пользователе и ролях, как RequestBody в контроллере? Таким образом, вы можете создать пользователя с ролью.