Проблема с JP Qu Sub Query - PullRequest
       15

Проблема с JP Qu Sub Query

0 голосов
/ 24 апреля 2019

Я начинаю использовать QueryDsl 4 И я получил эту ошибку

java.lang.UnsupportedOperationException
    at com.querydsl.jpa.JPASubQuery.iterate(JPASubQuery.java:72)
    at com.querydsl.core.support.FetchableQueryBase.fetch(FetchableQueryBase.java:46)
    at dao.SearchProjetDao.getListProjetsQueryDsl(SearchProjetDao.java:108)
    at controllers.ProjetRest.getListProjetsQueryDsl(ProjetRest.java:82)

Когда я пытаюсь выполнить этот подзапрос

QProjet prj = new QProjet("prj");
...
BooleanBuilder where_loc = new BooleanBuilder();

if( bean.commune != null ){

    QLocalisation loc_2 = new QLocalisation("loc_2");

    where_loc.and(prj.id.in( 
            JPAExpressions.select(loc_2.projet.id).from(loc_2)
            .where(loc_2.commune.id.eq(bean.commune))
            .fetch()
    ));

}
...

Я использовал JPASubQuery в QueryDsl 3, но он больше не существует в версии 4

1 Ответ

1 голос
/ 24 апреля 2019

Вы поместили выборку не в том месте.

where_loc.and(prj.id.in( 
            JPAExpressions.select(loc_2.projet.id).from(loc_2)
            .where(loc_2.commune.id.eq(bean.commune))
         //   .fetch()  <--- Remove
    ));

ожидает либо (среди прочего)

  • SubQueryExpression - перегрузка, выбранная измененным кодом
  • Collection - перегрузка, выбранная ошибочным кодом. (Я предполагаю, что это должны быть константы)

См. Примеры подзапросов в QueryDls4 doc

...