Skip to content

Commit 2dce059

Browse files
wojciechkedzioraw.kedziora
andauthored
Support entity graphs in streaming methods (#82)
Co-authored-by: w.kedziora <[email protected]>
1 parent 351db7a commit 2dce059

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/RepositoryQueryEntityGraphInjector.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RepositoryQueryEntityGraphInjector implements MethodInterceptor {
2323
LoggerFactory.getLogger(RepositoryQueryEntityGraphInjector.class);
2424

2525
private static final List<String> EXECUTE_QUERY_METHODS =
26-
Arrays.asList("getResultList", "getSingleResult", "scroll");
26+
Arrays.asList("getResultList", "getSingleResult", "getResultStream", "scroll");
2727
private static final String UNWRAP_METHOD = "unwrap";
2828
private final EntityGraphQueryHintCandidate entityGraphCandidate;
2929

core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/StreamingRepositoryTest.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,16 @@
33
import static org.assertj.core.api.Assertions.assertThat;
44

55
import com.cosium.spring.data.jpa.entity.graph.BaseTest;
6+
import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph;
7+
import com.cosium.spring.data.jpa.entity.graph.domain2.NamedEntityGraph;
68
import com.cosium.spring.data.jpa.entity.graph.sample.Product;
79
import com.github.springtestdbunit.annotation.DatabaseSetup;
810
import java.util.List;
911
import java.util.stream.Collectors;
1012
import java.util.stream.Stream;
1113
import javax.inject.Inject;
14+
import org.hibernate.Hibernate;
15+
import org.junit.jupiter.api.DisplayName;
1216
import org.junit.jupiter.api.Test;
1317
import org.springframework.stereotype.Component;
1418
import org.springframework.transaction.annotation.Transactional;
@@ -22,13 +26,36 @@ class StreamingRepositoryTest extends BaseTest {
2226
@Inject private MyService myService;
2327

2428
@Test
25-
void test() {
29+
void test1() {
2630
assertThat(myService.list("Product 1")).isNotEmpty();
2731
}
2832

33+
@Test
34+
@DisplayName("Given noop eg when finding products then brand should not be initialized")
35+
void test2() {
36+
List<Product> products = myService.list("Product 1", EntityGraph.NOOP);
37+
assertThat(products).isNotEmpty();
38+
for (Product product : products) {
39+
assertThat(Hibernate.isInitialized(product.getBrand())).isFalse();
40+
}
41+
}
42+
43+
@Test
44+
@DisplayName("Given brand eg when finding products then brand should be initialize")
45+
void test3() {
46+
List<Product> products =
47+
myService.list("Product 1", NamedEntityGraph.loading(Product.BRAND_EG));
48+
assertThat(products).isNotEmpty();
49+
for (Product product : products) {
50+
assertThat(Hibernate.isInitialized(product.getBrand())).isTrue();
51+
}
52+
}
53+
2954
interface ProductRepository extends EntityGraphRepository<Product, Long> {
3055

3156
Stream<Product> findByName(String name);
57+
58+
Stream<Product> findByName(String name, EntityGraph entityGraph);
3259
}
3360

3461
@Transactional
@@ -43,5 +70,9 @@ static class MyService {
4370
public List<Product> list(String name) {
4471
return productRepository.findByName(name).collect(Collectors.toList());
4572
}
73+
74+
public List<Product> list(String name, EntityGraph entityGraph) {
75+
return productRepository.findByName(name, entityGraph).collect(Collectors.toList());
76+
}
4677
}
4778
}

0 commit comments

Comments
 (0)