2020import javax .persistence .criteria .Predicate ;
2121import javax .persistence .criteria .Root ;
2222import javax .persistence .criteria .Selection ;
23- import javax .persistence .criteria .Subquery ;
2423
2524import de .symeda .sormas .api .contact .ContactCriteria ;
2625import de .symeda .sormas .api .contact .ContactIndexDetailedDto ;
2928import de .symeda .sormas .api .utils .SortProperty ;
3029import de .symeda .sormas .backend .caze .Case ;
3130import de .symeda .sormas .backend .common .AbstractAdoService ;
32- import de .symeda .sormas .backend .common .AbstractDomainObject ;
3331import de .symeda .sormas .backend .facility .Facility ;
3432import de .symeda .sormas .backend .infrastructure .PointOfEntry ;
3533import de .symeda .sormas .backend .location .Location ;
@@ -51,12 +49,7 @@ public class ContactListCriteriaBuilder {
5149 private ContactService contactService ;
5250
5351 public CriteriaQuery <ContactIndexDto > buildIndexCriteria (ContactCriteria contactCriteria , List <SortProperty > sortProperties ) {
54- return buildIndexCriteria (
55- ContactIndexDto .class ,
56- this ::getContactIndexSelections ,
57- contactCriteria ,
58- this ::getIndexOrders ,
59- sortProperties );
52+ return buildIndexCriteria (ContactIndexDto .class , this ::getContactIndexSelections , contactCriteria , this ::getIndexOrders , sortProperties );
6053 }
6154
6255 public CriteriaQuery <ContactIndexDetailedDto > buildIndexDetailedCriteria (ContactCriteria contactCriteria , List <SortProperty > sortProperties ) {
@@ -216,16 +209,10 @@ private <T> CriteriaQuery<T> buildIndexCriteria(
216209 CriteriaBuilder cb = em .getCriteriaBuilder ();
217210 CriteriaQuery <T > cq = cb .createQuery (type );
218211 Root <Contact > contact = cq .from (Contact .class );
219-
220- Subquery <Integer > visitCountSq = cq .subquery (Integer .class );
221- Root <Contact > visitCountRoot = visitCountSq .from (Contact .class );
222- visitCountSq .where (cb .equal (visitCountRoot .get (AbstractDomainObject .ID ), contact .get (AbstractDomainObject .ID )));
223- visitCountSq .select (cb .size (visitCountRoot .get (Contact .VISITS )));
224-
225212 ContactJoins joins = new ContactJoins (contact );
226213
227214 List <Selection <?>> selections = new ArrayList <>(selectionProvider .apply (contact , joins ));
228- selections .add (visitCountSq );
215+ selections .add (cb . size ( contact . get ( Contact . VISITS )) );
229216
230217 Predicate filter = buildContactFilter (contactCriteria , cb , contact , cq , joins );
231218
0 commit comments