teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/12/16 23:17

投稿

rubytomato
rubytomato

スコア1752

answer CHANGED
@@ -197,4 +197,22 @@
197
197
  * Spring Boot 2.2.1
198
198
  * MySQL 8.0.17
199
199
 
200
- で行いました。
200
+ で行いました。
201
+
202
+ ### 補足
203
+
204
+ 4番目を書き忘れたので補足します。
205
+
206
+ #### 4) ビューを使う
207
+
208
+ 目的のクエリでビューを作成し、JPA側でそれをエンティティクラスとして定義するという方法もあります。
209
+
210
+ ```sql
211
+ SELECT i.id, i.name, i.image,i.price, c.name, COUNT(i.id)
212
+ FROM items i INNER JOIN order_items oi ON i.id = oi.item_id
213
+ INNER JOIN categories c ON c.id = i.category_id
214
+ GROUP BY i.id, i.name, i.image, i.price, c.name
215
+ ORDER BY count(i.id) DESC;
216
+ ```
217
+
218
+ この場合、クエリの複雑さをビューに寄せることができるのでJava側の実装は簡単になります。