Сохраняющаяся дочерняя сущность Hibernate загружает коллекцию родительской стороны - PullRequest
0 голосов
/ 01 марта 2019

Я искал решение здесь и нашел тихий точный вопрос здесь Как сохранить дочернюю сущность Hibernate без загрузки коллекции Set родительской стороны Однако некоторые методы устарели, и я столкнулся с тем жепроблема.При сохранении дочерней сущности в родительской коллекции Hibernate выбирает все сущности из родительской коллекции, что влияет на время отклика.

User.java в качестве дочернего

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

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

Добавление группы пользователейк коллекции userGroups также добавьте пользователя в коллекцию пользователей этой группы, как показано ниже.

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 запросов, но все же выбирает всех пользователей из набора пользователей в одном запросе.Как вообще избежать выбора пользователей по ранее прикрепленной ссылке, так как это пустая трата ресурсов, когда мне не нужно извлекать пользователей в наборе, а требуется только вставить туда пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...