Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 91ee84e

Browse files
SORMAS-Foundation#3650 - Removed redundant subquery
1 parent 2fe95d2 commit 91ee84e

1 file changed

Lines changed: 2 additions & 15 deletions

File tree

sormas-backend/src/main/java/de/symeda/sormas/backend/contact/ContactListCriteriaBuilder.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import javax.persistence.criteria.Predicate;
2121
import javax.persistence.criteria.Root;
2222
import javax.persistence.criteria.Selection;
23-
import javax.persistence.criteria.Subquery;
2423

2524
import de.symeda.sormas.api.contact.ContactCriteria;
2625
import de.symeda.sormas.api.contact.ContactIndexDetailedDto;
@@ -29,7 +28,6 @@
2928
import de.symeda.sormas.api.utils.SortProperty;
3029
import de.symeda.sormas.backend.caze.Case;
3130
import de.symeda.sormas.backend.common.AbstractAdoService;
32-
import de.symeda.sormas.backend.common.AbstractDomainObject;
3331
import de.symeda.sormas.backend.facility.Facility;
3432
import de.symeda.sormas.backend.infrastructure.PointOfEntry;
3533
import 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

Comments
 (0)