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

質問編集履歴

2

解決方法を試みた部分を載せました

2019/12/17 01:14

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
File without changes
body CHANGED
@@ -142,9 +142,40 @@
142
142
 
143
143
 
144
144
  ```
145
+ 12/17追記 Goalseq goalseqidに関するものを以下に修正しました。
146
+ が、同じようなエラーが出てしまいました。
147
+ ```
148
+ エラー文
149
+ Caused by: org.springframework.data.mapping.PropertyReferenceException: No property goalSeq found for type Meisai! Did you mean 'goalseq'?
150
+ ```
145
151
 
152
+ ```java
153
+ エンティティ
154
+ ①Meisaiエンティティ
155
+ @OneToOne(targetEntity = GoalSeq.class)
156
+ @JoinColumn(name = "goalseq_id")
157
+ private GoalSeq goalseq;
146
158
 
159
+ ②GoalSeqエンティティ
160
+ @OneToOne(mappedBy = "goalseq", cascade = CascadeType.ALL)
161
+ private Meisai meisai;
162
+ ```
163
+ ```java
164
+ Meisaiリポジトリ
165
+ public interface MeisaiRepository extends JpaRepository<Meisai, Integer> {
147
166
 
167
+ public Meisai findByGoalSeq(GoalSeq goalseq);
168
+ }
169
+ ```
170
+ ```java
171
+ Meisaiサービス
172
+ public Meisai findByGoalSeq(GoalSeq goalseq) {
173
+ return repository.findByGoalSeq(goalseq);
174
+ }
175
+ ```
176
+
177
+
178
+
148
179
  ### 試したこと
149
180
  ・OneToOneの書き方が間違っていないか確認した
150
181
  ・MeisaiサービスとリポジトリのfindByGoalSeq変数が含まれるところをコメントアウトしたらビルドが通るが、コメントアウトした部分のデータを取る書き方が分からず困った。

1

編集途中で投稿してしまいました。

2019/12/17 01:14

投稿

chocolate_pie
chocolate_pie

スコア26

title CHANGED
@@ -1,1 +1,1 @@
1
- Springでプロジェクトのビルド失敗します
1
+ Springビルド失敗 (No property goalSeq found for type Meisai!)
body CHANGED
@@ -6,7 +6,7 @@
6
6
  上からCaused byが4つありましたので記します。
7
7
  ```
8
8
  エラーメッセージ
9
- ```
9
+
10
10
  ①Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'meisaiService': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'meisaiRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract jp.co.itc.mbo.entity.Meisai jp.co.itc.mbo.repository.MeisaiRepository.findByGoalSeq(jp.co.itc.mbo.entity.GoalSeq)! No property goalSeq found for type Meisai!
11
11
 
12
12
  ②Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'meisaiRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract jp.co.itc.mbo.entity.Meisai jp.co.itc.mbo.repository.MeisaiRepository.findByGoalSeq(jp.co.itc.mbo.entity.GoalSeq)! No property goalSeq found for type Meisai!
@@ -14,11 +14,13 @@
14
14
  ③Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract jp.co.itc.mbo.entity.Meisai jp.co.itc.mbo.repository.MeisaiRepository.findByGoalSeq(jp.co.itc.mbo.entity.GoalSeq)! No property goalSeq found for type Meisai!
15
15
 
16
16
  ④Caused by: org.springframework.data.mapping.PropertyReferenceException: No property goalSeq found for type Meisai!
17
+ ```
17
18
 
18
-
19
19
  ### 該当のソースコード
20
- Entityクラス
21
20
 
21
+ エンティティ
22
+ ```java
23
+
22
24
  Meisai.java
23
25
  @Entity
24
26
  @Table(name = "meisai_tbl")
@@ -32,12 +34,127 @@
32
34
  @OneToOne(targetEntity = GoalSeq.class)
33
35
  @JoinColumn(name = "goalseq_id")
34
36
  private GoalSeq goalseqid;
37
+
35
38
  ```
39
+ ```java
40
+ GoalSeq.java
41
+ @Entity
42
+ @Table(name="goals_seq")
43
+ public class GoalSeq {
44
+ @Id
45
+ @Column(name="id")
46
+ @GeneratedValue(strategy = GenerationType.IDENTITY)//自動採番
47
+ private int id;
36
48
 
49
+ @OneToOne(mappedBy = "goalseqid", cascade = CascadeType.ALL)
50
+ private Meisai meisai;
51
+ //useridをユーザマスタエンティティから参照していますがユーザマスタエンティティの記述は省略します
52
+ @ManyToOne(targetEntity = UserMaster.class)
53
+ @JoinColumn(nullable = false, name = "user_id")
54
+ private UserMaster userid;
55
+ ```
56
+ リポジトリ
57
+ ```java
58
+ MeisaiRepository.java
59
+ @Repository
60
+ public interface MeisaiRepository extends JpaRepository<Meisai, Integer> {
61
+ public Meisai findByGoalSeq(GoalSeq goalseq);
62
+ }
63
+ ```
64
+ ```java
65
+ GoalSeqRepository.java
66
+ @Repository
67
+ public interface GoalSeqRepository extends JpaRepository<GoalSeq,Integer>{
68
+ @Query(value="SELECT * FROM goals_seq where delete_flg=false and user_id=:ID order by goal_id DESC ",nativeQuery = true)
69
+ public List <GoalSeq> findCurrent(@Param("ID")int userid);
70
+ }
71
+ ```
72
+ サービス
73
+ ```java
74
+ MeisaiService.java
75
+
76
+ @Service
77
+ public class MeisaiService {
78
+ //1目標ごとに紐づけられているmeisai_tblの情報をとってくる
79
+ public Meisai findByGoalSeq(GoalSeq goalseq) {
80
+ return repository.findByGoalSeq(goalseq);
81
+ }
82
+
83
+ public Meisai save(Meisai meisai) {
84
+ return repository.save(meisai);
85
+ }
86
+ }
87
+ ```
88
+ ```java
89
+ GoalSeqService.java
90
+ @Service
91
+ public class GoalSeqService {
92
+
93
+ //有効なuseridが含まれるレコードをとってくる
94
+ public List<GoalSeq> findCurrent(int userid) {
95
+ return repository.findCurrent( userid);
96
+
97
+ public GoalSeq save(GoalSeq goalseq) {
98
+ return repository.save(goalseq);
99
+ }
100
+ }
101
+ ```
102
+ コントローラー
103
+ ```java
104
+ @Controller
105
+ public class DisplayController {
106
+ @Autowired
107
+ GoalSeqService goalseqservice;
108
+ @Autowired
109
+ MeisaiService meisaiservice;
110
+ @Autowired
111
+ UserMasterService usermasterservice;
112
+ @RequestMapping("/{id}") //idはユーザのIDだよ
113
+ public String showGoal(@PathVariable int id, Model model) {
114
+
115
+ //ユーザ情報の取得
116
+ UserMaster usermaster = usermasterservice.findOne(id);
117
+
118
+
119
+ //自分の目標内容とウェイトを表示す
120
+ int userid = usermaster.getId();
121
+ List<GoalSeq> goalseqs = goalseqservice.findCurrent(userid);
122
+ model.addAttribute("goalseqs", goalseqs);
123
+
124
+ //本人、上長コメントを表示する
125
+ Meisai meisai0 = meisaiservice.findByGoalSeq(goalseqs.get(0));
126
+ Meisai meisai1 = meisaiservice.findByGoalSeq(goalseqs.get(1));
127
+ Meisai meisai2 = meisaiservice.findByGoalSeq(goalseqs.get(2));
128
+ Meisai meisai3 = meisaiservice.findByGoalSeq(goalseqs.get(3));
129
+ Meisai meisai4 = meisaiservice.findByGoalSeq(goalseqs.get(4));
130
+
131
+ model.addAttribute("meisai0", meisai0);
132
+ model.addAttribute("meisai1", meisai1);
133
+ model.addAttribute("meisai2", meisai2);
134
+ model.addAttribute("meisai3", meisai3);
135
+ model.addAttribute("meisai4", meisai4);
136
+
137
+ return "goals/goal_list";
138
+
139
+ }
140
+
141
+ }
142
+
143
+
144
+ ```
145
+
146
+
147
+
37
148
  ### 試したこと
149
+ ・OneToOneの書き方が間違っていないか確認した
150
+ ・MeisaiサービスとリポジトリのfindByGoalSeq変数が含まれるところをコメントアウトしたらビルドが通るが、コメントアウトした部分のデータを取る書き方が分からず困った。
38
151
 
39
- ここに問題に対して試したことを記載してください。
40
-
41
152
  ### 補足情報(FW/ツールのバージョンなど)
153
+ DB定義情報です。
154
+ Meisai_tbl
155
+ ![イメージ説明](e16b8113252e734fc0d10abdb90b4264.png)
156
+ goals_seq
157
+ ![イメージ説明](eb53c516d73e30dd65a24f5034552862.png)
42
158
 
43
- ここにより詳細な情報記載してください。
159
+ goals_seqのidMeisaiのgoalseq_idに紐づけたです
160
+ 数時間調べても分かりませんでした、初心者で至らない部分が多数ありますがよろしくお願いします。