我有两个互相引用的对象:
class User {
@OneToMany(mappedBy="admin")
List<Group> ownedGroups;
}
class Group {
@NotNull
@ManyToOne
@JoinColumn(name = "admin_id", referencedColumnName = "id")
private User admin;
User admin;
}
在组服务层中,有一个方法create
,它接收一个组,创建一个组,将该用户设置为该组的管理员,将该组添加到ownedGroups
列表中将其保存到db:
public void create(String groupName, String username) throws IOException {
User user = userService.loadByUsername(username);
Group group = new Group();
group.setAdmin(user);
user.addOwnedGroup(group);
// groupRepository.save(group);
// userRepository.save(user);
}
现在我想知道我应该将哪个实体保存到数据库中?用户还是群组?因为一个是新实例,另一个是更新。
答案 0 :(得分:0)
由于用户已在数据库中保留,因此您只需要保存组实体。您可以从已创建映射的用户实体中检索附加到用户的组。
此外,当您要检索组时,它也会为您提供管理员用户实体。
public void create(String groupName, String username) throws IOException {
User user = userService.loadByUsername(username);
Group group = new Group();
group.setAdmin(user);
user.addOwnedGroup(group);
groupRepository.save(group);
//groupRepository.saveAndFlush(group); you can flush to save instantly
}