持久的休眠子实体加载父端集合

时间:2019-02-28 22:05:30

标签: hibernate

我在这里寻找解决方案,在这里How to persist a Hibernate child entity without loading the parent-side Set collection找到了一个安静的确切问题 但是,不赞成使用某些方法,并且遇到了同样的问题。 当将子实体保留到父集合中时,Hibernate将从父集合中选择所有实体,这会影响响应时间。

User.java作为子对象

@ManyToMany(mappedBy = "users")
private Set<UserGroup> userGroups;

public void addGroup(UserGroup userGroup){
    this.userGroups.add(userGroup);
    userGroup.addUser(this);
}

将userGroup添加到userGroups集合还可以按照以下方式将用户添加到该组users集合中。

UserGroup.java作为父级

@ManyToMany
@Fetch(FetchMode.SUBSELECT)
@JoinTable(name = "group_users", joinColumns = @JoinColumn(name = "group_id"),
        inverseJoinColumns = @JoinColumn(name = "user_id"))
private Set<User> users;

public void addUser(User user) {
    this.users.add(user);
}

我添加了FetchMode.SUBSELECT来避免n + 1个查询问题,但它仅解决了n + 1个查询问题,仍然从一个查询中的“用户设置”中选择所有用户。 当我不需要获取集合中的用户,而只需要在此处插入用户时,如何避免完全按照先前附加的链接选择用户,这是浪费资源。

0 个答案:

没有答案