Skip to content

Commit

Permalink
[Blazebit#1909] Add test case for multiset with nested join fetching
Browse files Browse the repository at this point in the history
  • Loading branch information
Mobe91 committed Feb 22, 2025
1 parent 36bcda9 commit d022b71
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.blazebit.persistence.view.testsuite.basic.model.PrimitivePersonView;
import com.blazebit.persistence.view.testsuite.basic.model.PrimitiveSimpleDocumentView;
import com.blazebit.persistence.view.testsuite.basic.model.SelectFetchingPrimitivePersonView;
import java.util.Collections;
import java.util.List;
import javax.persistence.EntityManager;
import org.junit.Before;
Expand Down Expand Up @@ -153,14 +154,14 @@ public void testEntityViewSubviewFetches() {
assertEquals("doc1", view.getName());
assertEquals("pers1", view.getOwner().getName());
assertEquals("pers1", view.getCorrelatedOwner().getName());
assertNull(view.getContacts());
assertEquals(Collections.emptyMap(), view.getContacts());
}

@Test
public void entityViewMultisetWithNestedSelectFetching() {
// Given
EntityViewSetting<PrimitiveDocumentMultisetView, CriteriaBuilder<PrimitiveDocumentMultisetView>> setting = EntityViewSetting.create(PrimitiveDocumentMultisetView.class);
setting.fetch("people.ownedDocuments");
setting.fetch("people.ownedDocumentsSelectFetched");

// When
PrimitiveDocumentMultisetView view = evm.applySetting(setting, cbf.create(em, PrimitiveDocument.class).where("id").eq(doc1.getId())).getResultList().get(0);
Expand All @@ -171,7 +172,26 @@ public void entityViewMultisetWithNestedSelectFetching() {
assertEquals(0, view.getDocId());
assertEquals(1, view.getPeople().size());
SelectFetchingPrimitivePersonView personView = view.getPeople().get(0);
assertEquals(1, personView.getOwnedDocuments().size());
assertEquals(1, personView.getOwnedDocumentsSelectFetched().size());
assertNull(personView.getName());
}

@Test
public void entityViewMultisetWithNestedJoinFetching() {
// Given
EntityViewSetting<PrimitiveDocumentMultisetView, CriteriaBuilder<PrimitiveDocumentMultisetView>> setting = EntityViewSetting.create(PrimitiveDocumentMultisetView.class);
setting.fetch("people.ownedDocumentsJoinFetched");

// When
PrimitiveDocumentMultisetView view = evm.applySetting(setting, cbf.create(em, PrimitiveDocument.class).where("id").eq(doc1.getId())).getResultList().get(0);

// Then
assertNull(view.getPartners());
assertNull(view.getName());
assertEquals(0, view.getDocId());
assertEquals(1, view.getPeople().size());
SelectFetchingPrimitivePersonView personView = view.getPeople().get(0);
assertEquals(1, personView.getOwnedDocumentsJoinFetched().size());
assertNull(personView.getName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public interface SelectFetchingPrimitivePersonView extends IdHolderView<Long> {

public String getName();

@Mapping(fetch = FetchStrategy.SELECT)
public Set<PrimitiveSimpleDocumentView> getOwnedDocuments();
@Mapping(value = "ownedDocuments", fetch = FetchStrategy.SELECT)
public Set<PrimitiveSimpleDocumentView> getOwnedDocumentsSelectFetched();

@Mapping(value = "ownedDocuments", fetch = FetchStrategy.JOIN)
public Set<PrimitiveSimpleDocumentView> getOwnedDocumentsJoinFetched();
}

0 comments on commit d022b71

Please sign in to comment.