#566 - Demonstrate custom query on a two entity aggregate.

Based on the discussion at https://stackoverflow.com/questions/52978700/how-to-write-a-custom-query-in-spring-data-jdbc
This commit is contained in:
Jesse Friedland
2020-05-14 17:23:44 -04:00
committed by Jens Schauder
parent 6564fa8ca6
commit 9f6b6f3cbd
3 changed files with 15 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.With;
import lombok.With;
import java.time.Period;
import java.time.temporal.ChronoUnit;

View File

@@ -36,6 +36,16 @@ interface LegoSetRepository extends CrudRepository<LegoSet, Integer> {
" WHERE :age BETWEEN l.min_age and l.max_age")
List<ModelReport> reportModelForAge(@Param("age") int age);
/**
* See https://stackoverflow.com/questions/52978700/how-to-write-a-custom-query-in-spring-data-jdbc
* @param name
* @return
*/
@Query("select a.*, b.handbuch_id as manual_handbuch_id, b.author as manual_author, b.text as manual_text from lego_set a " +
"join handbuch b on a.id = b.handbuch_id " +
"where name = :name")
List<LegoSet> findByName(@Param("name") String name);
@Modifying
@Query("UPDATE model set name = lower(name) WHERE name <> lower(name)")
int lowerCaseMapKeys();

View File

@@ -23,6 +23,7 @@ import java.time.Period;
import java.util.Arrays;
import java.util.List;
import org.assertj.core.api.Assertions;
import org.assertj.core.groups.Tuple;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -72,7 +73,6 @@ public class AggregateTests {
legoSets = repository.findAll();
Output.list(legoSets, "Manual replaced");
checkLegoSets(legoSets, "One last attempt: Just build a car! Ok?", 3);
}
@Test
@@ -111,6 +111,9 @@ public class AggregateTests {
// SUV, F1 Ferrari 2018 and Muck get updated
assertThat(updated).isEqualTo(3);
final List<LegoSet> legoSetsByName = repository.findByName("Small Car 01");
assertThat(legoSetsByName).hasSize(1);
}
private LegoSet createLegoSet(String name, int minimumAge, int maximumAge) {