|
22 | 22 | import jakarta.persistence.TypedQuery;
|
23 | 23 | import jakarta.persistence.criteria.CriteriaBuilder;
|
24 | 24 | import jakarta.persistence.criteria.CriteriaQuery;
|
| 25 | +import jakarta.persistence.criteria.Join; |
| 26 | +import jakarta.persistence.criteria.JoinType; |
25 | 27 | import jakarta.persistence.criteria.Order;
|
26 | 28 | import jakarta.persistence.criteria.Path;
|
27 | 29 | import jakarta.persistence.criteria.Predicate;
|
|
32 | 34 | import org.apache.fineract.infrastructure.core.jpa.CriteriaQueryFactory;
|
33 | 35 | import org.apache.fineract.organisation.office.domain.Office;
|
34 | 36 | import org.apache.fineract.portfolio.client.domain.Client;
|
| 37 | +import org.apache.fineract.portfolio.client.domain.ClientIdentifier; |
35 | 38 | import org.springframework.data.domain.Page;
|
36 | 39 | import org.springframework.data.domain.Pageable;
|
37 | 40 | import org.springframework.data.jpa.domain.Specification;
|
@@ -62,13 +65,15 @@ public Page<SearchedClient> searchByText(String searchText, Pageable pageable, S
|
62 | 65 |
|
63 | 66 | Specification<Client> spec = (r, q, builder) -> {
|
64 | 67 | Path<Office> o = r.get("office");
|
| 68 | + Join<Client, ClientIdentifier> identity = r.join("identifiers", JoinType.LEFT); |
65 | 69 |
|
66 | 70 | List<Predicate> predicates = new ArrayList<>();
|
67 | 71 | predicates.add(cb.like(o.get("hierarchy"), hierarchyLikeValue));
|
68 | 72 |
|
69 | 73 | String searchLikeValue = "%" + searchText + "%";
|
70 | 74 | predicates.add(cb.or(cb.like(r.get("accountNumber"), searchLikeValue), cb.like(r.get("displayName"), searchLikeValue),
|
71 |
| - cb.like(r.get("externalId"), searchLikeValue), cb.like(r.get("mobileNo"), searchLikeValue))); |
| 75 | + cb.like(r.get("externalId"), searchLikeValue), cb.like(r.get("mobileNo"), searchLikeValue), |
| 76 | + cb.like(identity.get("documentKey"), searchLikeValue))); |
72 | 77 |
|
73 | 78 | return cb.and(predicates.toArray(new Predicate[0]));
|
74 | 79 | };
|
|
0 commit comments