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();