JPA Deltaspike - предложение where с использованием атрибута объединенного / извлеченного объекта

Я пытаюсь сделать запрос с предложением where, используя атрибут сущности атрибута сущности из предложения соединения / выборки, код выглядит так:

List<Questionnaire> data = criteria()
            .eq(Questionnaire_.status, statusActive)
            //.eq(Questionnaire_.responses.status, statusActive)//invalid code :(
            .fetch(Questionnaire_.responses, JoinType.LEFT) //can be fetch or join
            .orderDesc(Questionnaire_.title)
            .getResultList();

В двух связанных таблицах соотношение "один ко многим" отображено правильно, в одной анкете есть несколько ответов. Проблема в том, что текущий запрос получает всю АКТИВНУЮ анкету со ВСЕМИ ответами (включая мягко удаленные ответы).

Возможные решения, которые я подумал:

  • Использовать текстовый запрос JPQL
  • Использовать определенную библиотеку как QueryDSL

Какие-то рекомендации или возможные решения?

ОБНОВЛЕНИЕ: использование того же запроса QueryDSL отлично работает с этим кодом:

// Metamodels
QQuestionnaire _questionnaire = QQuestionnaire.questionnaire;
QResponse _response = QResponse.response;
//Query
List<PollQuestionnaireOp> data = queryFactory
    .selectFrom(_questionnaire)
    .leftJoin(_questionnaire.responses, _response).fetchJoin()
    .where(
        _questionnaire.status.eq(statusActive),
        _response.status.eq(statusActive)
    )
    .orderBy(_questionnaire.title.desc())
    .fetch();

0 ответов

Другие вопросы по тегам