通过Hibernate / JPA在db中保留实体网络

时间:2017-08-22 02:38:41

标签: java hibernate

我有两个互相引用的对象:

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);
    }

现在我想知道我应该将哪个实体保存到数据库中?用户还是群组?因为一个是新实例,另一个是更新。

1 个答案:

答案 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
    }