我有组,角色,URL实体,每个组具有多个角色,每个角色具有多个URL。那里已经有一些组,角色和URL插入到db中。当我创建具有某些现有角色的新组时,由于组不是持久对象而导致失败。
是否有某种方法可以创建具有多对多持久对象的非持久对象?
下面的代码不起作用
@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;
}