#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:
committed by
Jens Schauder
parent
6564fa8ca6
commit
9f6b6f3cbd
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user