Skip to content

Commit 51a85b1

Browse files
committed
querydsl version fixed.
1 parent a386c56 commit 51a85b1

File tree

1 file changed

+26
-31
lines changed

1 file changed

+26
-31
lines changed

demo-querydsl/src/main/java/com/example/PizzaRepository.java

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package com.example;
22

3+
import com.example.model.Base;
34
import com.example.model.Pizza;
5+
import com.example.model.Topping;
46
import com.example.querydsl.QBase;
57
import com.example.querydsl.QPizza;
68
import com.example.querydsl.QPizzaToppings;
79
import com.example.querydsl.QTopping;
810
import com.querydsl.core.Tuple;
911
import com.querydsl.sql.SQLQueryFactory;
1012
import com.querydsl.sql.dml.SQLInsertClause;
13+
import org.slf4j.Logger;
14+
import org.slf4j.LoggerFactory;
1115
import org.springframework.beans.factory.annotation.Autowired;
1216
import org.springframework.stereotype.Repository;
1317
import org.springframework.transaction.annotation.Transactional;
1418

19+
import java.util.ArrayList;
1520
import java.util.Collections;
1621
import java.util.List;
1722
import java.util.stream.Collectors;
@@ -29,28 +34,6 @@ public class PizzaRepository {
2934
private final QTopping qTopping = QTopping.topping;
3035

3136
public List<Pizza> findOrderByIdAsc() {
32-
// List<Result<Record>> values = dslContext.selectDistinct()
33-
// .from(PIZZA)
34-
// .innerJoin(BASE).on(BASE.ID.eq(PIZZA.BASE_ID))
35-
// .innerJoin(PIZZA_TOPPINGS).on(PIZZA_TOPPINGS.PIZZA_ID.eq(PIZZA.ID))
36-
// .innerJoin(TOPPING).on(TOPPING.ID.eq(PIZZA_TOPPINGS.TOPPINGS_ID))
37-
// .orderBy(PIZZA.ID.asc())
38-
// .fetch()
39-
// .intoGroups(PIZZA.fields())
40-
// .values()
41-
// .stream()
42-
// .collect(Collectors.toList());
43-
// if (values.isEmpty()) {
44-
// return Collections.emptyList();
45-
// }
46-
// return values.stream()
47-
// .map(r -> {
48-
// Pizza pizza = r.into(PIZZA.ID, PIZZA.NAME, PIZZA.PRICE).get(0).into(Pizza.class);
49-
// pizza.setBase(r.into(BASE.ID, BASE.NAME).get(0).into(Base.class));
50-
// pizza.setToppings(r.sortAsc(TOPPING.ID).into(Topping.class));
51-
// return pizza;
52-
// })
53-
// .collect(Collectors.toList());
5437
List<Tuple> values = sqlQueryFactory
5538
.select(qPizza.id, qPizza.name, qPizza.price, qBase.id, qBase.name, qTopping.id, qTopping.name)
5639
.from(qPizza)
@@ -64,15 +47,27 @@ public List<Pizza> findOrderByIdAsc() {
6447
if (values.isEmpty()) {
6548
return Collections.emptyList();
6649
}
67-
return values.stream()
68-
.map(tuple -> {
69-
Pizza pizza = new Pizza();
70-
pizza.setId(tuple.get(qPizza.id));
71-
pizza.setName(tuple.get(qPizza.name));
72-
pizza.setPrice(tuple.get(qPizza.price));
73-
return pizza;
74-
})
75-
.collect(Collectors.toList());
50+
List<Pizza> pizzas = new ArrayList<>();
51+
Pizza pizza = null;
52+
for (Tuple tuple : values) {
53+
Long pizzaId = tuple.get(qPizza.id);
54+
if (pizza == null || !pizza.getId().equals(pizzaId)) {
55+
pizza = new Pizza();
56+
pizza.setId(pizzaId);
57+
pizza.setName(tuple.get(qPizza.name));
58+
pizza.setPrice(tuple.get(qPizza.price));
59+
Base base = new Base(tuple.get(qBase.id));
60+
base.setId(tuple.get(qBase.id));
61+
base.setName(tuple.get(qBase.name));
62+
pizza.setBase(base);
63+
pizza.setToppings(new ArrayList<>());
64+
pizzas.add(pizza);
65+
}
66+
Topping topping = new Topping(tuple.get(qTopping.id));
67+
topping.setName(tuple.get(qTopping.name));
68+
pizza.getToppings().add(topping);
69+
}
70+
return pizzas;
7671
}
7772

7873
public Pizza save(Pizza pizza) {

0 commit comments

Comments
 (0)