Commit ee6bc5ec4b8c341afff28d2a9104ec3960878321

Authored by Volodymyr Babak
Committed by Andrew Shvayka
1 parent 628ce799

Fixed issue for last level query in case entities have more relations in the hie…

…rarchy below requested level
... ... @@ -472,10 +472,13 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
472 472 if (entityFilter.isFetchLastLevelOnly()) {
473 473 String fromOrTo = (entityFilter.getDirection().equals(EntitySearchDirection.FROM) ? "from" : "to");
474 474 StringBuilder notExistsPart = new StringBuilder();
475   - notExistsPart.append(" NOT EXISTS (SELECT 1 from relation nr where ")
  475 + notExistsPart.append(" NOT EXISTS (SELECT 1 from relation nr ")
  476 + .append(whereFilter.replaceAll("re\\.", "nr\\."))
  477 + .append(" and ")
476 478 .append("nr.").append(fromOrTo).append("_id").append(" = re.").append(toOrFrom).append("_id")
477 479 .append(" and ")
478 480 .append("nr.").append(fromOrTo).append("_type").append(" = re.").append(toOrFrom).append("_type");
  481 +
479 482 if (!StringUtils.isEmpty(entityFilter.getRelationType())) {
480 483 notExistsPart.append(" and nr.relation_type = :where_relation_type");
481 484 }
... ... @@ -556,7 +559,9 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
556 559 .append(" and ")
557 560 .append("nr.").append(fromOrTo).append("_id").append(" = re.").append(toOrFrom).append("_id")
558 561 .append(" and ")
559   - .append("nr.").append(fromOrTo).append("_type").append(" = re.").append(toOrFrom).append("_type");
  562 + .append("nr.").append(fromOrTo).append("_type").append(" = re.").append(toOrFrom).append("_type")
  563 + .append(" and ")
  564 + .append(whereFilter.toString().replaceAll("re\\.", "nr\\."));
560 565
561 566 notExistsPart.append(")");
562 567 whereFilter.append(" and ( re.lvl = ").append(entityFilter.getMaxLevel()).append(" OR ").append(notExistsPart.toString()).append(")");
... ...