質問編集履歴

4

2019/06/19 10:30

投稿

imyme
imyme

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,447 +1,7 @@
1
- ### 前提・実現したいこと
1
+ 解決まし
2
2
 
3
+ 解決しました。
3
4
 
5
+ 解決しました。
4
6
 
5
- Springでアクセサリの販売サイトを作成てい
6
-
7
- 新着商品と売れ行きのいい商品で検索できるフォームを作りたいのですが、
8
-
9
- エラーが出てしまい、うまくいきません。
10
-
11
- @NativeNamedQueryを使うか、コンストラクタ式を使えばいいのか分からず、
12
-
13
- とりあえずはコンストラクタ式で作成しています。
14
-
15
- Spring初心者です。ご教授いただきたく思います。
16
-
17
-
18
-
19
- ### 発生している問題・エラーメッセージ
20
-
21
-
22
-
23
- WARN 7840 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: java.util.List, at table: order_items, for columns: [org.hibernate.mapping.Column(item_list)]
24
-
25
-
26
-
27
-
28
-
29
- ### OrderItem.java(エンティティ)
30
-
31
- ```
32
-
33
- @Entity
34
-
35
- @Table(name = "order_items")
36
-
37
- public class OrderItem {
38
-
39
-
40
-
41
- @Column
42
-
43
- private List<OrderItem> ItemList;
44
-
45
-
46
-
47
- //注文商品ID
48
-
49
-
50
-
51
- @Id
52
-
53
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_order_items_gen")
54
-
55
- @SequenceGenerator(name = "seq_order_items_gen", sequenceName = "seq_order_items", allocationSize = 1)
56
-
57
- private Integer id;
58
-
59
-
60
-
61
- //注文個数
62
-
63
-
64
-
65
- @Column
66
-
67
- private Integer quantity;
68
-
69
-
70
-
71
- //注文情報
72
-
73
-
74
-
75
- @ManyToOne
76
-
77
- @JoinColumn(name = "order_id", referencedColumnName = "id")
78
-
79
- private Order order;
80
-
81
-
82
-
83
- //商品情報
84
-
85
-
86
-
87
- @ManyToOne
88
-
89
- @JoinColumn(name = "item_id", referencedColumnName = "id")
90
-
91
- private Item item;
92
-
93
-
94
-
95
-
96
-
97
- //注文時点商品単価
98
-
99
-
100
-
101
- @Column
102
-
103
- private int price;
104
-
105
-
106
-
107
-
108
-
109
- 以降ゲッターセッター
110
-
111
- コード
112
-
113
- ```
114
-
115
- ### item.java(エンティティ)
116
-
117
- ```@Entity
118
-
119
- @Table(name = "items")
120
-
121
-
122
-
123
- public class Item {
124
-
125
- //商品ID
126
-
127
-
128
-
129
- @Id
130
-
131
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_items_gen")
132
-
133
- @SequenceGenerator(name = "seq_items_gen", sequenceName = "seq_items", allocationSize = 1)
134
-
135
- private Integer id;
136
-
137
-
138
-
139
- //商品名
140
-
141
-
142
-
143
- @Column
144
-
145
- private String name;
146
-
147
-
148
-
149
- //価格
150
-
151
-
152
-
153
- @Column
154
-
155
- private Integer price;
156
-
157
-
158
-
159
- // 商品説明
160
-
161
-
162
-
163
- @Column
164
-
165
- private String description;
166
-
167
-
168
-
169
- //在庫数
170
-
171
-
172
-
173
- @Column
174
-
175
- private Integer stock;
176
-
177
-
178
-
179
- // 商品画像ファイル名
180
-
181
-
182
-
183
- @Column
184
-
185
- private String image;
186
-
187
-
188
-
189
- //削除フラグ
190
-
191
-
192
-
193
- @Column(insertable = false)
194
-
195
- private Integer deleteFlag;
196
-
197
-
198
-
199
- //登録日付
200
-
201
-
202
-
203
- @Column(insertable = false, updatable = false)
204
-
205
- private Date insertDate;
206
-
207
-
208
-
209
- //カテゴリ情報
210
-
211
-
212
-
213
- @ManyToOne
214
-
215
- @JoinColumn(name = "category_id", referencedColumnName = "id")
216
-
217
- private Category category;
218
-
219
-
220
-
221
- //注文商品情報
222
-
223
-
224
-
225
- @OneToMany(mappedBy = "item")
226
-
227
- private List<OrderItem> orderItemList;
228
-
229
-
230
-
231
- /**
232
-
233
- * コンストラクタ
234
-
235
- */
236
-
237
- public Item() {
238
-
239
- }
240
-
241
-
242
-
243
- /**
244
-
245
- * コンストラクタ
246
-
247
- * @param id 商品ID
248
-
249
- * @param name 商品名
250
-
251
- * @param description 商品説明
252
-
253
- * @param image 画像ファイル名
254
-
255
- * @param category_name カテゴリ名
256
-
257
- */
258
-
259
- public Item(Integer id, String name, String description, String image, String category_name) {
260
-
261
- this.id = id;
262
-
263
- this.name = name;
264
-
265
- this.description = description;
266
-
267
- this.image = image;
268
-
269
- this.category = new Category();
270
-
271
- this.category.setName(category_name);
272
-
273
- }
274
-
275
-
276
-
277
- /**
278
-
279
- * コンストラクタ
280
-
281
- * @param id 商品ID
282
-
283
- * @param name 商品名
284
-
285
- * @param price 価格
286
-
287
- * @param description 商品説明
288
-
289
- * @param image 画像ファイル名
290
-
291
- * @param category_name カテゴリ名
292
-
293
- */
294
-
295
- public Item(Integer id, String name, Integer price, String description, String image, String category_name) {
296
-
297
- this.id = id;
298
-
299
- this.name = name;
300
-
301
- this.price = price;
302
-
303
- this.description = description;
304
-
305
- this.image = image;
306
-
307
- this.category = new Category();
308
-
309
- this.category.setName(category_name);
310
-
311
- }
312
-
313
-
314
-
315
- コード
316
-
317
- ```
318
-
319
- ### リポジトリ
320
-
321
- ```public interface OrderItemRepository extends JpaRepository<OrderItem, Integer> {
322
-
323
- @Query("select new OrderItem(item) from OrderItem o group by o.item order by count(o.item) desc")
324
-
325
- public List<OrderItem> findItem();
326
-
327
- ```
328
-
329
-
330
-
331
- ###コントローラー
332
-
333
- ``` @RequestMapping(path = "/")
334
-
335
- public String index( Model model, Pageable pageable) {
336
-
337
-
338
-
339
- List<OrderItem>orderItemList = orderItemRepository.findItem();
340
-
341
- List<Item> items = new ArrayList<Item>();
342
-
343
- for(int i=0; i< orderItemList.size(); i++) {
344
-
345
- if (orderItemList.get(i).getItem().getDeleteFlag()==0)
346
-
347
- items.add(orderItemList.get(i).getItem());
348
-
349
- }
350
-
351
- Page<Item> pages= Convert.listConvertToPage(items,pageable);
352
-
353
- model.addAttribute("items",pages.getContent());
354
-
355
- Page<Item>itemList = null;
356
-
357
- if(items.isEmpty()) {
358
-
359
- itemList= itemRepository.findByDeleteFlagOrderByInsertDateDesc(Constant.NOT_DELETED,pageable);
360
-
361
- // エンティティ内の検索結果をJavaBeansにコピー
362
-
363
- List<ItemBean> itemBeanList = BeanCopy.copyEntityToItemBean(itemList.getContent());
364
-
365
- // 商品情報をViewへ渡す
366
-
367
- model.addAttribute("items", itemBeanList);
368
-
369
- model.addAttribute("flg", 1);
370
-
371
- }
372
-
373
- return "index";
374
-
375
- }
376
-
377
-
378
-
379
- //新着順表示
380
-
381
- @RequestMapping(path = "/item/list/new" ,method = RequestMethod.GET)
382
-
383
- public String newItem(Model model, Pageable pageable) {
384
-
385
-
386
-
387
- // 商品情報を全件検索(新着順)
388
-
389
- Page<Item>itemList=null;
390
-
391
- itemList= itemRepository.findByDeleteFlagOrderByInsertDateDesc(Constant.NOT_DELETED, pageable);
392
-
393
-
394
-
395
- List<ItemBean> itemBeanList = BeanCopy.copyEntityToItemBean(itemList.getContent());
396
-
397
-
398
-
399
- model.addAttribute("pages", itemList);
400
-
401
- model.addAttribute("items", itemBeanList);
402
-
403
- model.addAttribute("url", "/item/list/");
404
-
405
- return "/";
406
-
407
- }
408
-
409
-
410
-
411
- コード
412
-
413
- ```
414
-
415
-
416
-
417
- ### コンバートクラス
418
-
419
- ```public class Convert {
420
-
421
-
422
-
423
- public static <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
424
-
425
- int start = (int)pageable.getOffset();
426
-
427
- int end= (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
428
-
429
- return new PageImpl<T>(list.subList(start, end), pageable, list.size());
430
-
431
- }
432
-
433
-
434
-
435
- }
436
-
437
- コード
438
-
439
- ```
440
-
441
-
442
-
443
-
444
-
445
- ### 試したこと
446
-
447
- JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。引き継ぎと、自身の勉強のために元あるソースコードを足したり消したりしているのですが、よく分からなくなってしまいました。
7
+ 解決しました

3

2019/06/19 10:30

投稿

imyme
imyme

スコア12

test CHANGED
File without changes
test CHANGED
@@ -444,4 +444,4 @@
444
444
 
445
445
  ### 試したこと
446
446
 
447
- JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。
447
+ JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。引き継ぎと、自身の勉強のために元あるソースコードを足したり消したりしているのですが、よく分からなくなってしまいました。

2

2019/06/19 04:42

投稿

imyme
imyme

スコア12

test CHANGED
File without changes
test CHANGED
@@ -414,6 +414,34 @@
414
414
 
415
415
 
416
416
 
417
+ ### コンバートクラス
418
+
419
+ ```public class Convert {
420
+
421
+
422
+
423
+ public static <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
424
+
425
+ int start = (int)pageable.getOffset();
426
+
427
+ int end= (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
428
+
429
+ return new PageImpl<T>(list.subList(start, end), pageable, list.size());
430
+
431
+ }
432
+
433
+
434
+
435
+ }
436
+
437
+ コード
438
+
439
+ ```
440
+
441
+
442
+
443
+
444
+
417
445
  ### 試したこと
418
446
 
419
447
  JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。

1

2019/06/19 04:40

投稿

imyme
imyme

スコア12

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
  ### OrderItem.java(エンティティ)
30
30
 
31
+ ```
32
+
31
33
  @Entity
32
34
 
33
35
  @Table(name = "order_items")
@@ -106,6 +108,10 @@
106
108
 
107
109
  以降ゲッターセッター
108
110
 
111
+ コード
112
+
113
+ ```
114
+
109
115
  ### item.java(エンティティ)
110
116
 
111
117
  ```@Entity