Как связать моего нового объектного пользователя с объектом роли в моем весеннем загрузочном приложении, когда я получаю сообщение с запросом в json / приложении, в котором есть все данные для нового пользователя?
Каков наилучший подход (сообщите роль в JSON)? Если да, то как JSON должен касаться информации о роли?
Я попытаюсь объяснить себя. Во-первых, я извиняюсь, я не являюсь носителем английского языка.
Я хочу создать нового объекта-пользователя, отображающего json, полученный из сообщения HTTP-запроса. Проблема в том, что у меня есть внутренний объект из моей модели под названием роль. Роли всегда либо общие, либо админы. Затем я хочу сослаться на уже созданный объект роли.
Итак, я хочу знать, как указать роль от моего пользователя. Вам следует учесть, что модель нельзя изменить из-за некоторых внутренних ограничений команды. Я не знаю, правильно ли отправлять информацию о роли в 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;
...
}