API критериев: один и тот же запрос, разные типы результатов (выражения конструктора) - PullRequest
1 голос
/ 20 марта 2011

У меня есть метод, который генерирует критерии JPA:

private CriteriaQuery<ResultSetType> createQuery (ReportFilter reportFilter) {
    List<Predicate> criteria = new ArrayList<Predicate>();
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<ResultSetType> c = cb.createQuery(ResultSetType.class);
    ...
    c.multiselect(...);
    ...
    return c;
}

Теперь я хочу создать несколько запросов с разными выражениями конструктора (ResultSetType).

Что было бы самым элегантным решением для этого? Тип аргумента всегда один и тот же (ReportFilter), но для различных выражений конструктора (ResultSetType) я хочу создать другой выбор c.multiselect (...).

Есть предложения?

BR, Reen

1 Ответ

0 голосов
/ 21 марта 2011
private <T> CriteriaQuery<T> genericCriteria(ReportFilter reportFilter, Class<T> clazz) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<T> c = cb.createQuery(clazz);
    ....
    if (clazz.equals(ResultSetType.class)) {
        c.multiselect(...);
    } else {
    }
    ...
    return c;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...