JPQL-запрос, результатом которого является список объектов, основанный на вставке или изменении одной из 5 таблиц - PullRequest
0 голосов
/ 09 января 2020

Я работаю над запросом JPQL, цель которого - отправить обратно список объектов на основе вставок или модификаций в одну из 5 таблиц.

Вот запрос

    StringBuilder statement = new StringBuilder("select NEW package.CustomObject(co.id, item, dim, mat, pro) from Object1 co JOIN co.items item JOIN item.dim dim JOIN item.mat mat JOIN item.pro pro "
            + " where co.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "    or co.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "    or exists ( select item1.id "
            + "             from Object2 item1 "
            + "             where item1.orderNo = co.orderNo "
            + "              and (    item1.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "                   or  item1.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "                   or exists "
            + "                      ( select dim1.id "
            + "                        from Object3 dim1 "
            + "                        where dim1.item.id = item1.id "
            + "                            and (   dim1.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "                                or dim1.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'"
            + "                                 )"
            + "                      ) "
            + "                    or exists "
            + "                       ( select mat1.id "
            + "                         from Object4 mat1 "
            + "                         where mat1.item.id = item1.id "
            + "                             and (mat1.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "                                or mat1.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'"
            + "                                  )"
            + "                        ) "
            + "                     or exists "
            + "                        ( select prod1.id "
            + "                          from Object5 prod1 "
            + "                          where prod1.item.id = item1.id  "
            + "                              and (prod1.ins between '2018-12-26 01:00:00' and '2019-06-26 01:00:00' "
            + "                                or prod1.mod between '2018-12-26 01:00:00' and '2019-06-26 01:00:00'"
            + "                                   ) "
            + "                         ) "
            + "                   ) "
            + "         ) "
            + " order by co.id, item.id DESC");

Обычно У меня должно быть тысячи результатов, но этот запрос дает один уникальный результат

...