質問編集履歴
4
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,224 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
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
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
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
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")
|