У меня есть группы «Группы», «Роли», «URL-адреса», каждая группа имеет несколько ролей, а каждая роль имеет несколько URL-адресов. Там, где уже некоторые группы, роли и URL-адреса вставлены в БД. Когда я создаю новую группу с некоторыми существующими ролями, она не удалась, так как группа не является постоянным объектом.
Есть ли какой-нибудь способ создать непостоянный объект с постоянными объектами "человек-ко-многим"?
Ниже код не работает
@PostMapping(value="/api/groups")
@ResponseBody
public Group saveGroup(@RequestBody Group group) {
Group existed = groupRepository.findByName(group.getName());
if(existed == null) {
existed = groupRepository.save(group);
}
return existed;
}
Ниже код отлично работает
@PostMapping(value="/api/groups")
@ResponseBody
public Group saveGroup(@RequestBody Group group) {
Group existed = null;
if(group != null) {
List<Role> roles = group.getRoles();
List<Role> persistRoles = new ArrayList<>();
if(roles != null) {
roles.forEach(role -> {
Role temp = roleRepository.findByIdOrName(role.getRole_id(), role.getName());
if(temp == null) {
try {
roleRepository.save(role);
} catch (Exception e) {
}
}
if(temp != null) {
persistRoles.add(temp);
}
});
}
existed = groupRepository.findByName(group.getName());
if(existed == null) {
existed = groupRepository.save(new Group(group.getName()));
existed.setRoles(persistRoles);
existed = groupRepository.save(existed);
}
}
return existed;
}