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

質問編集履歴

4

2019/06/19 10:30

投稿

imyme
imyme

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,224 +1,4 @@
1
- ### 前提・実現したいこと
2
-
3
- Springでアクセサリの販売サイトを作成てい
4
- 新着商品と売れ行きのいい商品で検索できるフォームを作りいのですが、
5
- エラーが出てしまい、うまくいきません。
6
- @NativeNamedQueryを使うか、コンストラクタ式を使えばいいのか分からず、
7
- とりあえずはコンストラクタ式で作成しています。
8
- Spring初心者です。ご教授いただきたく思います。
9
-
10
- ### 発生している問題・エラーメッセージ
11
-
12
- 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)]
13
-
14
-
15
- ### OrderItem.java(エンティティ)
16
- ```
17
- @Entity
18
- @Table(name = "order_items")
19
- public class OrderItem {
20
-
21
- @Column
22
- private List<OrderItem> ItemList;
23
-
24
- //注文商品ID
25
-
26
- @Id
27
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_order_items_gen")
28
- @SequenceGenerator(name = "seq_order_items_gen", sequenceName = "seq_order_items", allocationSize = 1)
29
- private Integer id;
30
-
31
- //注文個数
32
-
33
- @Column
34
- private Integer quantity;
35
-
36
- //注文情報
37
-
38
- @ManyToOne
39
- @JoinColumn(name = "order_id", referencedColumnName = "id")
40
- private Order order;
41
-
42
- //商品情報
43
-
44
- @ManyToOne
45
- @JoinColumn(name = "item_id", referencedColumnName = "id")
46
- private Item item;
47
-
48
-
49
- //注文時点商品単価
50
-
51
- @Column
52
- private int price;
53
-
54
-
55
- 以降ゲッターセッター
56
- コード
57
- ```
58
- ### item.java(エンティティ)
59
- ```@Entity
60
- @Table(name = "items")
61
-
62
- public class Item {
63
- //商品ID
64
-
65
- @Id
66
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_items_gen")
67
- @SequenceGenerator(name = "seq_items_gen", sequenceName = "seq_items", allocationSize = 1)
68
- private Integer id;
69
-
70
- //商品名
71
-
72
- @Column
73
- private String name;
74
-
75
- //価格
76
-
77
- @Column
78
- private Integer price;
79
-
80
- // 商品説明
81
-
82
- @Column
83
- private String description;
84
-
85
- //在庫数
86
-
87
- @Column
88
- private Integer stock;
89
-
90
- // 商品画像ファイル名
91
-
92
- @Column
93
- private String image;
94
-
95
- //削除フラグ
96
-
97
- @Column(insertable = false)
98
- private Integer deleteFlag;
99
-
100
- //登録日付
101
-
102
- @Column(insertable = false, updatable = false)
103
- private Date insertDate;
104
-
105
- //カテゴリ情報
106
-
107
- @ManyToOne
108
- @JoinColumn(name = "category_id", referencedColumnName = "id")
109
- private Category category;
110
-
111
- //注文商品情報
112
-
113
- @OneToMany(mappedBy = "item")
114
- private List<OrderItem> orderItemList;
115
-
116
- /**
117
- * コンストラクタ
118
- */
119
- public Item() {
120
- }
121
-
122
- /**
123
- * コンストラクタ
124
- * @param id 商品ID
125
- * @param name 商品名
126
- * @param description 商品説明
127
- * @param image 画像ファイル名
128
- * @param category_name カテゴリ名
129
- */
130
- public Item(Integer id, String name, String description, String image, String category_name) {
131
- this.id = id;
132
- this.name = name;
133
- this.description = description;
134
- this.image = image;
135
- this.category = new Category();
136
- this.category.setName(category_name);
137
- }
138
-
139
- /**
140
- * コンストラクタ
141
- * @param id 商品ID
142
- * @param name 商品名
143
- * @param price 価格
144
- * @param description 商品説明
145
- * @param image 画像ファイル名
146
- * @param category_name カテゴリ名
147
- */
148
- public Item(Integer id, String name, Integer price, String description, String image, String category_name) {
149
- this.id = id;
150
- this.name = name;
151
- this.price = price;
152
- this.description = description;
153
- this.image = image;
154
- this.category = new Category();
155
- this.category.setName(category_name);
156
- }
157
-
158
- コード
159
- ```
160
- ### リポジトリ
161
- ```public interface OrderItemRepository extends JpaRepository<OrderItem, Integer> {
162
- @Query("select new OrderItem(item) from OrderItem o group by o.item order by count(o.item) desc")
163
- public List<OrderItem> findItem();
164
- ```
165
-
166
- ###コントローラー
167
- ``` @RequestMapping(path = "/")
168
- public String index( Model model, Pageable pageable) {
169
-
170
- List<OrderItem>orderItemList = orderItemRepository.findItem();
171
- List<Item> items = new ArrayList<Item>();
172
- for(int i=0; i< orderItemList.size(); i++) {
173
- if (orderItemList.get(i).getItem().getDeleteFlag()==0)
174
- items.add(orderItemList.get(i).getItem());
175
- }
176
- Page<Item> pages= Convert.listConvertToPage(items,pageable);
177
- model.addAttribute("items",pages.getContent());
178
- Page<Item>itemList = null;
179
- if(items.isEmpty()) {
180
- itemList= itemRepository.findByDeleteFlagOrderByInsertDateDesc(Constant.NOT_DELETED,pageable);
181
- // エンティティ内の検索結果をJavaBeansにコピー
182
- List<ItemBean> itemBeanList = BeanCopy.copyEntityToItemBean(itemList.getContent());
183
- // 商品情報をViewへ渡す
184
- model.addAttribute("items", itemBeanList);
185
- model.addAttribute("flg", 1);
186
- }
187
- return "index";
188
- }
189
-
190
- //新着順表示
191
- @RequestMapping(path = "/item/list/new" ,method = RequestMethod.GET)
192
- public String newItem(Model model, Pageable pageable) {
193
-
194
- // 商品情報を全件検索(新着順)
195
- Page<Item>itemList=null;
196
- itemList= itemRepository.findByDeleteFlagOrderByInsertDateDesc(Constant.NOT_DELETED, pageable);
197
-
198
- List<ItemBean> itemBeanList = BeanCopy.copyEntityToItemBean(itemList.getContent());
199
-
200
- model.addAttribute("pages", itemList);
201
- model.addAttribute("items", itemBeanList);
202
- model.addAttribute("url", "/item/list/");
203
- return "/";
204
- }
205
-
206
- コード
207
- ```
208
-
209
- ### コンバートクラス
210
- ```public class Convert {
211
-
212
- public static <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
213
- int start = (int)pageable.getOffset();
214
- int end= (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
215
- return new PageImpl<T>(list.subList(start, end), pageable, list.size());
216
- }
217
-
218
- }
219
- コード
220
- ```
221
-
222
-
223
- ### 試したこと
224
- JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。引き継ぎと、自身の勉強のために元あるソースコードを足したり消したりしているのですが、よく分からなくなってしまいました。
1
+ 解決まし
2
+ 解決しました。
3
+ 解決しました
4
+ 解決しまし

3

2019/06/19 10:30

投稿

imyme
imyme

スコア12

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

2

2019/06/19 04:42

投稿

imyme
imyme

スコア12

title CHANGED
File without changes
body CHANGED
@@ -206,5 +206,19 @@
206
206
  コード
207
207
  ```
208
208
 
209
+ ### コンバートクラス
210
+ ```public class Convert {
211
+
212
+ public static <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
213
+ int start = (int)pageable.getOffset();
214
+ int end= (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
215
+ return new PageImpl<T>(list.subList(start, end), pageable, list.size());
216
+ }
217
+
218
+ }
219
+ コード
220
+ ```
221
+
222
+
209
223
  ### 試したこと
210
224
  JPQLでは、newのキーワードで上記クラスのコンストラクタを呼び出し、select句で取得したい値を中に書くとあるのですが、プログラミング初心者で引数も良く分からない状態です。

1

2019/06/19 04:40

投稿

imyme
imyme

スコア12

title CHANGED
File without changes
body CHANGED
@@ -13,6 +13,7 @@
13
13
 
14
14
 
15
15
  ### OrderItem.java(エンティティ)
16
+ ```
16
17
  @Entity
17
18
  @Table(name = "order_items")
18
19
  public class OrderItem {
@@ -52,6 +53,8 @@
52
53
 
53
54
 
54
55
  以降ゲッターセッター
56
+ コード
57
+ ```
55
58
  ### item.java(エンティティ)
56
59
  ```@Entity
57
60
  @Table(name = "items")