|
18 | 18 | import static org.assertj.core.api.Assertions.*;
|
19 | 19 |
|
20 | 20 | import java.util.List;
|
| 21 | +import java.util.Optional; |
| 22 | +import java.util.stream.Stream; |
21 | 23 |
|
22 | 24 | import org.junit.ClassRule;
|
23 | 25 | import org.junit.Rule;
|
@@ -80,6 +82,57 @@ public void executeCustomQueryWithNamedParameters() {
|
80 | 82 |
|
81 | 83 | }
|
82 | 84 |
|
| 85 | + @Test // DATAJDBC-172 |
| 86 | + public void executeCustomQueryWithReturnTypeIsOptional() { |
| 87 | + |
| 88 | + DummyEntity dummyEntity = dummyEntity("a"); |
| 89 | + repository.save(dummyEntity); |
| 90 | + |
| 91 | + Optional<DummyEntity> entity = repository.findByIdWithReturnTypeIsOptional(dummyEntity.id); |
| 92 | + |
| 93 | + assertThat(entity).map(e -> e.name).contains("a"); |
| 94 | + |
| 95 | + } |
| 96 | + |
| 97 | + @Test // DATAJDBC-172 |
| 98 | + public void executeCustomQueryWithReturnTypeIsOptionalWhenEntityNotFound() { |
| 99 | + |
| 100 | + DummyEntity dummyEntity = dummyEntity("a"); |
| 101 | + repository.save(dummyEntity); |
| 102 | + |
| 103 | + Optional<DummyEntity> entity = repository.findByIdWithReturnTypeIsOptional(9999L); |
| 104 | + |
| 105 | + assertThat(entity).isNotPresent(); |
| 106 | + |
| 107 | + } |
| 108 | + |
| 109 | + @Test // DATAJDBC-172 |
| 110 | + public void executeCustomQueryWithReturnTypeIsEntity() { |
| 111 | + |
| 112 | + DummyEntity dummyEntity = dummyEntity("a"); |
| 113 | + repository.save(dummyEntity); |
| 114 | + |
| 115 | + DummyEntity entity = repository.findByIdWithReturnTypeIsEntity(dummyEntity.id); |
| 116 | + |
| 117 | + assertThat(entity).isNotNull(); |
| 118 | + assertThat(entity.name).isEqualTo("a"); |
| 119 | + |
| 120 | + } |
| 121 | + |
| 122 | + @Test // DATAJDBC-172 |
| 123 | + public void executeCustomQueryWithReturnTypeIsStream() { |
| 124 | + |
| 125 | + repository.save(dummyEntity("a")); |
| 126 | + repository.save(dummyEntity("b")); |
| 127 | + |
| 128 | + Stream<DummyEntity> entities = repository.findAllWithReturnTypeIsStream(); |
| 129 | + |
| 130 | + assertThat(entities) // |
| 131 | + .extracting(e -> e.name) // |
| 132 | + .containsExactlyInAnyOrder("a", "b"); |
| 133 | + |
| 134 | + } |
| 135 | + |
83 | 136 | private DummyEntity dummyEntity(String name) {
|
84 | 137 |
|
85 | 138 | DummyEntity entity = new DummyEntity();
|
@@ -110,8 +163,17 @@ private interface DummyEntityRepository extends CrudRepository<DummyEntity, Long
|
110 | 163 | @Query("SELECT * FROM DUMMYENTITY WHERE lower(name) <> name")
|
111 | 164 | List<DummyEntity> findByNameContainingCapitalLetter();
|
112 | 165 |
|
113 |
| - |
114 | 166 | @Query("SELECT * FROM DUMMYENTITY WHERE name < :upper and name > :lower")
|
115 | 167 | List<DummyEntity> findByNamedRangeWithNamedParameter(@Param("lower") String lower, @Param("upper") String upper);
|
| 168 | + |
| 169 | + @Query("SELECT * FROM DUMMYENTITY WHERE id = :id FOR UPDATE") |
| 170 | + Optional<DummyEntity> findByIdWithReturnTypeIsOptional(@Param("id") Long id); |
| 171 | + |
| 172 | + @Query("SELECT * FROM DUMMYENTITY WHERE id = :id FOR UPDATE") |
| 173 | + DummyEntity findByIdWithReturnTypeIsEntity(@Param("id") Long id); |
| 174 | + |
| 175 | + @Query("SELECT * FROM DUMMYENTITY") |
| 176 | + Stream<DummyEntity> findAllWithReturnTypeIsStream(); |
| 177 | + |
116 | 178 | }
|
117 | 179 | }
|
0 commit comments