У меня есть класс с именем User
, и у него есть коллекция элементов groups
, как показано ниже:
public class User {
@ElementCollection
@CollectionTable(name = "user_groups", joinColumns = @JoinColumn(name = "id"))
private Set<String> groups;
//Other fields
}
Теперь мне нужно получить список пользователей на основе имени группы. Запрос выглядит примерно так:
@Query("select distinct user from User user " +
"left join fetch user.groups groups " +
"where :groupName IN groups")
List<User> findUsersByGroupName(@Param("groupName") String groupName);
Это работает нормально, но в извлеченных User
объектах я получаю только одну группу (которую я передаю). Мне нужны все группы User
в выбранных объектах. Как я могу сделать это эффективно? Я пытался использовать elements
и member of
, но, поскольку у меня много пользователей, выполнение запроса занимает много времени (в минутах).