Проблема с использованием оператора IN в коллекции Enum - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующая сущность:

public class MyEntity{
public static enum InterestType{
SPORTS,MUSIC
 }
//AutoGenerated
private Long id;
@Convert(converter = InterestsTypeToString.class) // convert Set<InterestType> to comma separated string e.g SPORTS,MUSIC and vice verca 
@Column(name = "CATEGORY")
private Set<InterestType> category = new HashSet<>();

//getter
//setters
}

Теперь, Поиск записей на основе категории

try {
        CriteriaQuery<MyEntity> criteria = getCriteriaQuery();
        Root<MyEntity> enti = criteria.from(MyEntity.class);
        List<Predicate> restrictions = new ArrayList<>();
        Predicate isActive = getCriteriaBuilder().equal(enti.get("active"), true);
                        Set<Set<InterestType>> catagories = new HashSet<>();
                        for(String cat : filterEntry.getValue().split(",")) {
                            Set<InterestsType> tempSet = new HashSet<>();
                            tempSet.add(InterestType.getFromCode(Integer.parseInt(cat)));
                            catagories.add(tempSet);
                        }
                        restrictions.add(enti .get(filterEntry.getKey()).in(catagories));

        TypedQuery<MyEntity> findByCat= getEntityManager().createQuery(criteria.select(enti)
                    .where(getCriteriaBuilder().and(isActive),
                            getCriteriaBuilder().or(restrictions.get(0))));

        findByCat.setFirstResult(pageNo - 1);
        findByCat.setMaxResults(pageSize);
        return findByCat.getResultList();
    } catch (NoResultException ex) {
        return null;
    } catch (Exception e) {
        throw new ApplicationExceptions("db.find.exception", null, e);
    }

Когда я выполняю приведенный выше код, я получаю исключение:

java.lang.IllegalArgumentException: Parameter value [SPORTS] did not match expected type [java.util.Set (n/a)]

Может кто-нибудь объяснить, что не так с кодом? И как мне отфильтровать записи из коллекции Enums?

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