Hibernate - CriteriaBuilder содержит коллекцию, содержащую любой элемент коллекции фильтров - PullRequest
0 голосов
/ 21 января 2020

У меня есть следующее поле в моей сущности:

    @ElementCollection(targetClass = UserType.class)
    @CollectionTable(name = "user_type", joinColumns = @JoinColumn(name = "user_id"))
    @Column(name = "ttype", nullable = false)
    @Enumerated(EnumType.STRING)    
    public Set<UserType> getUserTypes() {
        return userTypes;
    }

    public void setUserTypes(Set<UserType> userTypes) {
        this.userTypes = userTypes;
    }

Это выбирает коллекцию типов пользователей, назначенных конкретному пользователю. Это отлично работает. Теперь мне нужно отфильтровать пользователей, которые являются членами типов {ADMIN, MANAGER}. Поэтому мне нужно получить пользователей, которые относятся к типу любого типа, указанному в фильтре.

Поэтому я попытался

queryRoot.get("userTypes").in(filterTypes)

Но это, очевидно, не работает. Похоже, что CriteriaBuilder предоставляет базовые c функции сравнения, такие как equals, ge, et c. Но для этой проверки ничего нет.

Как сделать такой запрос через CriteriaBuilder?

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