|
104 | 104 | * @author Diego Krupitza
|
105 | 105 | * @author Christopher Klein
|
106 | 106 | * @author Mikhail Polivakha
|
| 107 | + * @author Paul Jones |
107 | 108 | */
|
108 | 109 | @IntegrationTest
|
109 | 110 | public class JdbcRepositoryIntegrationTests {
|
@@ -1286,6 +1287,36 @@ void fetchByExampleFluentOnlyInstantOneValueAsSimple() {
|
1286 | 1287 | assertThat(match.get().getName()).contains(two.getName());
|
1287 | 1288 | }
|
1288 | 1289 |
|
| 1290 | + @Test |
| 1291 | + void fetchDtoWithNoArgsConstructorWithAggregateReferencePopulated() { |
| 1292 | + |
| 1293 | + DummyEntity entity = new DummyEntity(); |
| 1294 | + entity.setRef(AggregateReference.to(20L)); |
| 1295 | + entity.setName("Test Dto"); |
| 1296 | + repository.save(entity); |
| 1297 | + |
| 1298 | + assertThat(repository.findById(entity.idProp).orElseThrow().getRef()).isEqualTo(AggregateReference.to(20L)); |
| 1299 | + |
| 1300 | + DummyDto foundDto = repository.findDtoByIdProp(entity.idProp).orElseThrow(); |
| 1301 | + assertThat(foundDto.getName()).isEqualTo("Test Dto"); |
| 1302 | + assertThat(foundDto.getRef()).isEqualTo(AggregateReference.to(20L)); |
| 1303 | + } |
| 1304 | + |
| 1305 | + @Test // GH-1759 |
| 1306 | + void fetchDtoWithAllArgsConstructorWithAggregateReferencePopulated() { |
| 1307 | + |
| 1308 | + DummyEntity entity = new DummyEntity(); |
| 1309 | + entity.setRef(AggregateReference.to(20L)); |
| 1310 | + entity.setName("Test Dto"); |
| 1311 | + repository.save(entity); |
| 1312 | + |
| 1313 | + assertThat(repository.findById(entity.idProp).orElseThrow().getRef()).isEqualTo(AggregateReference.to(20L)); |
| 1314 | + |
| 1315 | + DummyAllArgsDto foundDto = repository.findAllArgsDtoByIdProp(entity.idProp).orElseThrow(); |
| 1316 | + assertThat(foundDto.getName()).isEqualTo("Test Dto"); |
| 1317 | + assertThat(foundDto.getRef()).isEqualTo(AggregateReference.to(20L)); |
| 1318 | + } |
| 1319 | + |
1289 | 1320 | @Test // GH-1405
|
1290 | 1321 | void withDelimitedColumnTest() {
|
1291 | 1322 |
|
@@ -1426,6 +1457,10 @@ interface DummyEntityRepository extends CrudRepository<DummyEntity, Long>, Query
|
1426 | 1457 |
|
1427 | 1458 | @Query("SELECT * FROM DUMMY_ENTITY WHERE DIRECTION = :direction")
|
1428 | 1459 | List<DummyEntity> findByEnumType(Direction direction);
|
| 1460 | + |
| 1461 | + Optional<DummyDto> findDtoByIdProp(Long idProp); |
| 1462 | + |
| 1463 | + Optional<DummyAllArgsDto> findAllArgsDtoByIdProp(Long idProp); |
1429 | 1464 | }
|
1430 | 1465 |
|
1431 | 1466 | interface RootRepository extends ListCrudRepository<Root, Long> {
|
@@ -1834,6 +1869,42 @@ enum Direction {
|
1834 | 1869 | LEFT, CENTER, RIGHT
|
1835 | 1870 | }
|
1836 | 1871 |
|
| 1872 | + static class DummyDto { |
| 1873 | + @Id Long idProp; |
| 1874 | + String name; |
| 1875 | + AggregateReference<DummyEntity, Long> ref; |
| 1876 | + |
| 1877 | + public DummyDto() {} |
| 1878 | + |
| 1879 | + public String getName() { |
| 1880 | + return name; |
| 1881 | + } |
| 1882 | + |
| 1883 | + public AggregateReference<DummyEntity, Long> getRef() { |
| 1884 | + return ref; |
| 1885 | + } |
| 1886 | + } |
| 1887 | + |
| 1888 | + static class DummyAllArgsDto { |
| 1889 | + @Id Long idProp; |
| 1890 | + String name; |
| 1891 | + AggregateReference<DummyEntity, Long> ref; |
| 1892 | + |
| 1893 | + public DummyAllArgsDto(Long idProp, String name, AggregateReference<DummyEntity, Long> ref) { |
| 1894 | + this.idProp = idProp; |
| 1895 | + this.name = name; |
| 1896 | + this.ref = ref; |
| 1897 | + } |
| 1898 | + |
| 1899 | + public String getName() { |
| 1900 | + return name; |
| 1901 | + } |
| 1902 | + |
| 1903 | + public AggregateReference<DummyEntity, Long> getRef() { |
| 1904 | + return ref; |
| 1905 | + } |
| 1906 | + } |
| 1907 | + |
1837 | 1908 | interface DummyProjection {
|
1838 | 1909 | String getName();
|
1839 | 1910 | }
|
|
0 commit comments