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

質問編集履歴

4

解決コードの記載

2023/09/13 06:39

投稿

daruma
daruma

スコア1

title CHANGED
File without changes
body CHANGED
@@ -237,3 +237,76 @@
237
237
  java.lang.NullPointerException: Cannot invoke "com.example.employee.model.Employee.getEmployee_id()" because the return value of "com.example.employee.model.QaAnswer.getEmployee()" is null
238
238
 
239
239
  ```
240
+
241
+ ### 解決コード(メモ書き)
242
+
243
+ 以下Entityクラスに```employee_id```を取得するためのフィールドを用意
244
+ ```java/qa_answerクラス
245
+ @Entity
246
+ @Table(name = "qa_answer")
247
+ public class QaAnswer {
248
+
249
+
250
+ @Id
251
+ @Column(name = "id", nullable = false)
252
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
253
+ private Integer id;
254
+
255
+
256
+ @ManyToOne
257
+ @JoinColumn(name = "employee_id", referencedColumnName = "employee_id",nullable = false)
258
+ private Employee employee;
259
+
260
+ // 参照用、重複するカラムを選択する場合は「insertable=false, updatable=false」を追加しないといけないらしい。
261
+ @Column(name = "employee_id",insertable=false, updatable=false)
262
+ private Integer employee_id;
263
+
264
+
265
+ @Column(name = "question", nullable = false)
266
+ private Integer question;
267
+
268
+ @Column(name = "answer")
269
+ private String answer;
270
+
271
+ public Integer getId() {
272
+ return id;
273
+ }
274
+
275
+ public void setId(Integer id) {
276
+ this.id = id;
277
+ }
278
+
279
+ public Employee getEmployee() {
280
+ return employee;
281
+ }
282
+
283
+ public void setEmployee(Employee employee) {
284
+ this.employee = employee;
285
+ }
286
+
287
+ public Integer getEmployee_id() {
288
+ return employee_id;
289
+ }
290
+
291
+ public void setEmployee_id(Integer employee_id) {
292
+ this.employee_id = employee_id;
293
+ }
294
+
295
+ public Integer getQuestion() {
296
+ return question;
297
+ }
298
+
299
+ public void setQuestion(Integer question) {
300
+ this.question = question;
301
+ }
302
+
303
+ public String getAnswer() {
304
+ return answer;
305
+ }
306
+
307
+ public void setAnswer(String answer) {
308
+ this.answer = answer;
309
+ }
310
+
311
+ }
312
+ ```

3

追記

2023/09/13 00:56

投稿

daruma
daruma

スコア1

title CHANGED
File without changes
body CHANGED
@@ -168,7 +168,15 @@
168
168
  }
169
169
  ```
170
170
 
171
- ```DB情報に登録はあり
171
+ ```employeeテーブル情報
172
+ +------------+-----------+-------+-------------+------+
173
+ | first_name | last_name | staff | employee_id | team |
174
+ +------------+-----------+-------+-------------+------+
175
+ | 田中 | 五郎| 3 | 10 | 1 |
176
+ +------------+-----------+-------+-------------+------+
177
+ ```
178
+
179
+ ```qa_answerテーブル情報
172
180
  +----------+---------+-------------+----+
173
181
  | question | answer | employee_id | id |
174
182
  +----------+---------+-------------+----+

2

追記情報修正

2023/09/13 00:49

投稿

daruma
daruma

スコア1

title CHANGED
File without changes
body CHANGED
@@ -168,6 +168,14 @@
168
168
  }
169
169
  ```
170
170
 
171
+ ```DB情報に登録はあり
172
+ +----------+---------+-------------+----+
173
+ | question | answer | employee_id | id |
174
+ +----------+---------+-------------+----+
175
+ | 1 | テスト | 10 | 1 |
176
+ +----------+---------+-------------+----+
177
+ ```
178
+
171
179
  ### 発生している問題・エラーメッセージ
172
180
  名前付きパラメータが見つからないと行ったエラーぽいのですが、「employee_id」の値はおくっているはず。。。
173
181
  ```
@@ -188,12 +196,8 @@
188
196
  qaRepository.save(qa);
189
197
  ```
190
198
 
191
- ```DB情報に登録はあり
192
- |question|answer|employee_id|id|
193
- |:--|:--:|--:|
194
- |1|テスト|10|1|
195
- ```
196
199
 
200
+
197
201
  ### 試したこと
198
202
  ▼同じようなことを質問している人外なので参考にして、qa_answerクラスの「id」の@GeneratedValue を削除しましたが特に変わらず。。
199
203
  [https://teratail.com/questions/244129

1

補足情報の追記

2023/09/13 00:44

投稿

daruma
daruma

スコア1

title CHANGED
File without changes
body CHANGED
@@ -188,7 +188,40 @@
188
188
  qaRepository.save(qa);
189
189
  ```
190
190
 
191
+ ```DB情報に登録はあり
192
+ |question|answer|employee_id|id|
193
+ |:--|:--:|--:|
194
+ |1|テスト|10|1|
195
+ ```
196
+
191
197
  ### 試したこと
192
198
  ▼同じようなことを質問している人外なので参考にして、qa_answerクラスの「id」の@GeneratedValue を削除しましたが特に変わらず。。
193
199
  [https://teratail.com/questions/244129
194
- ](url)
200
+ ](url)
201
+
202
+ ▼2023/9/13追記
203
+ QaAnswerControllerクラスの```int employee_id```を削除しそれに伴いQaAnswerServiceクラスの引数も変更してみましたが今度は```NullPointerException```が発生してしまいました。JSONへ記載する情報がたりなかったのでしょうか。
204
+
205
+ ```java/QaAnswerControllerクラス
206
+ @PostMapping("/create")
207
+ public QaAnswer createQaAnswer(@RequestBody QaAnswer qa_answer) {
208
+ return qaService.createQaAnswer(qa_answer);
209
+ }
210
+ ```
211
+ ```java/QaAnswerServiceクラス
212
+ public QaAnswer createQaAnswer(QaAnswer qa_answer) {
213
+ Employee emp = empRepository.findById((long)qa_answer.getEmployee().getEmployee_id()).get();
214
+ QaAnswer qa = new QaAnswer();
215
+
216
+ qa.setEmployee(emp);
217
+ qa.setQuestion(qa_answer.getQuestion());
218
+ qa.setAnswer(qa_answer.getAnswer());
219
+ qaRepository.save(qa);
220
+
221
+ return qa;
222
+ }
223
+ ```
224
+ ```
225
+ java.lang.NullPointerException: Cannot invoke "com.example.employee.model.Employee.getEmployee_id()" because the return value of "com.example.employee.model.QaAnswer.getEmployee()" is null
226
+
227
+ ```