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

回答編集履歴

1

追記

2019/12/17 11:32

投稿

rubytomato
rubytomato

スコア1752

answer CHANGED
@@ -22,4 +22,263 @@
22
22
  上記のことから、解決方法は2つ考えられますが、個人的には1番目の解決方法が妥当だと思います。
23
23
 
24
24
  1) MeisaiのGoalSeq型プロパティ名を`goalSeq`にリネームする。
25
- 2) MeisaiRepositoryのメソッド名を`findByGoalseqid`にリネームする。
25
+ 2) MeisaiRepositoryのメソッド名を`findByGoalseqid`にリネームする。
26
+
27
+ **追記**
28
+
29
+ 質問内容から分かる範囲で再現した、双方のエンティティクラスでOneToOneアノテーションを付与した、双方向の関連を持つコードです。
30
+ 下記の環境で動作確認できています。
31
+
32
+ * OpenJDK 11.0
33
+ * Spring Boot 2.2.1
34
+ * Hibernate Core 5.1.0
35
+ * MySQL 8.0.17
36
+
37
+ ```Java
38
+ import java.util.Date;
39
+
40
+ import javax.persistence.CascadeType;
41
+ import javax.persistence.Column;
42
+ import javax.persistence.Entity;
43
+ import javax.persistence.GeneratedValue;
44
+ import javax.persistence.GenerationType;
45
+ import javax.persistence.Id;
46
+ import javax.persistence.OneToOne;
47
+ import javax.persistence.Table;
48
+
49
+ @Entity
50
+ @Table(name = "goals_seq")
51
+ public class GoalSeq {
52
+
53
+ @Id
54
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
55
+ private Long id;
56
+
57
+ @Column
58
+ private Long userId;
59
+
60
+ @Column
61
+ private Long goalId;
62
+
63
+ @Column
64
+ private String goalTitle;
65
+
66
+ @Column
67
+ private String goalDetail;
68
+
69
+ @Column
70
+ private String goalWeight;
71
+
72
+ @Column
73
+ private Date updatedAt;
74
+
75
+ @OneToOne(mappedBy = "goalSeq", cascade = CascadeType.ALL)
76
+ private Meisai meisai;
77
+
78
+ public Long getId() {
79
+ return id;
80
+ }
81
+
82
+ public void setId(Long id) {
83
+ this.id = id;
84
+ }
85
+
86
+ public Long getUserId() {
87
+ return userId;
88
+ }
89
+
90
+ public void setUserId(Long userId) {
91
+ this.userId = userId;
92
+ }
93
+
94
+ public Long getGoalId() {
95
+ return goalId;
96
+ }
97
+
98
+ public void setGoalId(Long goalId) {
99
+ this.goalId = goalId;
100
+ }
101
+
102
+ public String getGoalTitle() {
103
+ return goalTitle;
104
+ }
105
+
106
+ public void setGoalTitle(String goalTitle) {
107
+ this.goalTitle = goalTitle;
108
+ }
109
+
110
+ public String getGoalDetail() {
111
+ return goalDetail;
112
+ }
113
+
114
+ public void setGoalDetail(String goalDetail) {
115
+ this.goalDetail = goalDetail;
116
+ }
117
+
118
+ public String getGoalWeight() {
119
+ return goalWeight;
120
+ }
121
+
122
+ public void setGoalWeight(String goalWeight) {
123
+ this.goalWeight = goalWeight;
124
+ }
125
+
126
+ public Date getUpdatedAt() {
127
+ return updatedAt;
128
+ }
129
+
130
+ public void setUpdatedAt(Date updatedAt) {
131
+ this.updatedAt = updatedAt;
132
+ }
133
+
134
+ public Meisai getMeisai() {
135
+ return meisai;
136
+ }
137
+
138
+ public void setMeisai(Meisai meisai) {
139
+ this.meisai = meisai;
140
+ }
141
+
142
+ @Override
143
+ public String toString() {
144
+ return "GoalSeq [id=" + id + ", userId=" + userId + ", goalId=" + goalId + ", goalTitle=" + goalTitle
145
+ + ", goalDetail=" + goalDetail + ", goalWeight=" + goalWeight + ", updatedAt=" + updatedAt + "]";
146
+ }
147
+
148
+ }
149
+ ```
150
+
151
+ ```java
152
+ import javax.persistence.Column;
153
+ import javax.persistence.Entity;
154
+ import javax.persistence.GeneratedValue;
155
+ import javax.persistence.GenerationType;
156
+ import javax.persistence.Id;
157
+ import javax.persistence.JoinColumn;
158
+ import javax.persistence.OneToOne;
159
+ import javax.persistence.Table;
160
+
161
+ @Entity
162
+ @Table(name = "meisai_tbl")
163
+ public class Meisai {
164
+
165
+ @Id
166
+ @Column(name = "meisai_id")
167
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
168
+ private Long meisaiId;
169
+
170
+ @Column
171
+ private String selfMidCmt;
172
+
173
+ @Column
174
+ private String bossMidCmt;
175
+
176
+ @Column
177
+ private String selfEndCmt;
178
+
179
+ @Column
180
+ private String bossEndCmt;
181
+
182
+ @OneToOne
183
+ @JoinColumn(name = "goalseq_id")
184
+ private GoalSeq goalSeq;
185
+
186
+ public Long getMeisaiId() {
187
+ return meisaiId;
188
+ }
189
+
190
+ public void setMeisaiId(Long meisaiId) {
191
+ this.meisaiId = meisaiId;
192
+ }
193
+
194
+ public String getSelfMidCmt() {
195
+ return selfMidCmt;
196
+ }
197
+
198
+ public void setSelfMidCmt(String selfMidCmt) {
199
+ this.selfMidCmt = selfMidCmt;
200
+ }
201
+
202
+ public String getBossMidCmt() {
203
+ return bossMidCmt;
204
+ }
205
+
206
+ public void setBossMidCmt(String bossMidCmt) {
207
+ this.bossMidCmt = bossMidCmt;
208
+ }
209
+
210
+ public String getSelfEndCmt() {
211
+ return selfEndCmt;
212
+ }
213
+
214
+ public void setSelfEndCmt(String selfEndCmt) {
215
+ this.selfEndCmt = selfEndCmt;
216
+ }
217
+
218
+ public String getBossEndCmt() {
219
+ return bossEndCmt;
220
+ }
221
+
222
+ public void setBossEndCmt(String bossEndCmt) {
223
+ this.bossEndCmt = bossEndCmt;
224
+ }
225
+
226
+ public GoalSeq getGoalSeq() {
227
+ return goalSeq;
228
+ }
229
+
230
+ public void setGoalSeq(GoalSeq goalSeq) {
231
+ this.goalSeq = goalSeq;
232
+ }
233
+
234
+ @Override
235
+ public String toString() {
236
+ return "Meisai [meisaiId=" + meisaiId + ", selfMidCmt=" + selfMidCmt + ", bossMidCmt=" + bossMidCmt
237
+ + ", selfEndCmt=" + selfEndCmt + ", bossEndCmt=" + bossEndCmt + "]";
238
+ }
239
+
240
+ }
241
+ ```
242
+
243
+ リポジトリ
244
+
245
+ ```Java
246
+ import org.springframework.data.jpa.repository.JpaRepository;
247
+
248
+ import com.example.demo.entity.GoalSeq;
249
+ import com.example.demo.entity.Meisai;
250
+
251
+ public interface MeisaiRepository extends JpaRepository<Meisai, Long> {
252
+ public Meisai findByGoalSeq(GoalSeq goalseq);
253
+ }
254
+ ```
255
+
256
+ DDL
257
+
258
+ ```SQL
259
+ CREATE TABLE goals_seq (
260
+ id BIGINT AUTO_INCREMENT,
261
+ user_id BIGINT NOT NULL DEFAULT 0,
262
+ goal_id BIGINT NOT NULL DEFAULT 0,
263
+ goal_title VARCHAR(255) NULL,
264
+ goal_detail VARCHAR(255) NULL,
265
+ goal_weight VARCHAR(10) NULL,
266
+ updated_at DATE NOT NULL,
267
+ PRIMARY KEY (id)
268
+ )
269
+ ENGINE = INNODB
270
+ DEFAULT CHARSET = UTF8MB4;
271
+
272
+
273
+ CREATE TABLE meisai_tbl (
274
+ meisai_id BIGINT AUTO_INCREMENT,
275
+ goalseq_id BIGINT NOT NULL DEFAULT 0,
276
+ self_mid_cmt VARCHAR(255) NULL,
277
+ boss_mid_cmt VARCHAR(255) NULL,
278
+ self_end_cmt VARCHAR(255) NULL,
279
+ boss_end_cmt VARCHAR(255) NULL,
280
+ PRIMARY KEY (meisai_id)
281
+ )
282
+ ENGINE = INNODB
283
+ DEFAULT CHARSET = UTF8MB4;
284
+ ```