質問編集履歴

1

デバッグ後の結果

2019/03/16 13:20

投稿

sanezane
sanezane

スコア91

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,17 @@
4
4
 
5
5
  ###現状
6
6
 
7
- ユーザ登録時に作成者(created_by)などのシステム制御項目を挿入するようにしたいが、Domaによって自動生成されるInsert文created_by(作成者)などシステム制御項目が入ってこないためエラーで落ちる。
7
+ ユーザ登録時に作成者(created_by)などのシステム制御項目を挿入するようにしたいが、Insert文created_byのvalueにnullが入ってしまうためエラーで落ちる。
8
-
8
+
9
- (ユーザ情報を格納するテーブルで「created_by(作成者)」を必須項目に指定しているため)
9
+ (ユーザ情報を格納するテーブルで「created_by(作成者)」をnot nullに指定しているため)
10
+
11
+ created_byへ値を設定している(ハズ)の箇所は**DefaultEntityListener**というクラスです。ここで値が設定できていません。
12
+
13
+ 以下にコードを示していますが、**DefaultEntityListener**の`val createdBy = AuditInfoHolder.getAuditUser();`の部分で値が取得できていないことがわかりました。
10
14
 
11
15
  以下エラー画像(created_byは作成者)
12
16
 
13
- ![イメージ説明](74285fa9d6809a39f7e148bd775851a1.jpeg)
17
+ ![![イメージ説明](9ef1df0d1275e0e3145d2d157b6acbdf.jpeg)](6b70625fc1ce5fb824517be868c96086.jpeg)
14
18
 
15
19
 
16
20
 
@@ -70,6 +74,8 @@
70
74
 
71
75
 
72
76
 
77
+ import com.example.demo.domain.dto.common.DomaDtoImpl;
78
+
73
79
  import lombok.Data;
74
80
 
75
81
  import org.seasar.doma.*;
@@ -82,7 +88,7 @@
82
88
 
83
89
  @Table(name = "users")
84
90
 
85
- public class User extends DomaDto{
91
+ public class User extends DomaDtoImpl {
86
92
 
87
93
  //自動採番設定
88
94
 
@@ -92,25 +98,25 @@
92
98
 
93
99
  @GeneratedValue(strategy= GenerationType.IDENTITY)
94
100
 
95
- private Long id;
101
+ Long id;
96
-
97
-
98
-
102
+
103
+
104
+
99
- @Column
105
+ @Column
100
-
106
+
101
- private String name;
107
+ String name;
102
-
103
-
104
-
108
+
109
+
110
+
105
- @Column
111
+ @Column
106
-
112
+
107
- private String email;
113
+ String email;
108
-
109
-
110
-
114
+
115
+
116
+
111
- @Column
117
+ @Column
112
-
118
+
113
- private String password;
119
+ String password;
114
120
 
115
121
 
116
122
 
@@ -118,15 +124,17 @@
118
124
 
119
125
 
120
126
 
127
+
128
+
121
129
  ```
122
130
 
123
131
 
124
132
 
125
133
  DomaDto.javaではシステム制御項目を定義している。また、自動的に更新するようにDefaultEntityListener.javaを作成し指定している。
126
134
 
127
- ```DomaDto
135
+ ```DomaDtoImpl
128
-
136
+
129
- package com.example.demo.domain.dto;
137
+ package com.example.demo.domain.dto.common;
130
138
 
131
139
 
132
140
 
@@ -138,23 +146,21 @@
138
146
 
139
147
  import org.seasar.doma.Entity;
140
148
 
149
+ import org.seasar.doma.Version;
150
+
141
151
 
142
152
 
143
153
  import java.io.Serializable;
144
154
 
145
- import java.time.LocalDate;
146
-
147
155
  import java.time.LocalDateTime;
148
156
 
149
- import java.util.Date;
150
-
151
157
 
152
158
 
153
159
  @Entity(listener = DefaultEntityListener.class)// 自動的にシステム制御項目を更新するためにリスナーを指定する
154
160
 
155
161
  @Data
156
162
 
157
- public class DomaDto implements Serializable {
163
+ public abstract class DomaDtoImpl implements DomaDto,Serializable {
158
164
 
159
165
 
160
166
 
@@ -218,13 +224,15 @@
218
224
 
219
225
 
220
226
 
221
- //バージョン
227
+ // 楽観的排他制御で使用する改定番号
228
+
222
-
229
+ @Version
230
+
231
+ @Column(name = "version")
232
+
223
- @JsonIgnore
233
+ @JsonIgnore
224
-
225
- @Column
234
+
226
-
227
- private int version;
235
+ Integer version;
228
236
 
229
237
 
230
238
 
@@ -242,14 +250,12 @@
242
250
 
243
251
 
244
252
 
245
- package com.example.demo.domain.dto;
253
+ package com.example.demo.domain.dto.common;
246
254
 
247
255
 
248
256
 
249
257
  import com.example.demo.common.utils.ReflectionUtils;
250
258
 
251
- import com.example.demo.domain.dto.DomaDto;
252
-
253
259
  import com.example.demo.domain.exception.DoubleSubmitErrorException;
254
260
 
255
261
  import lombok.NoArgsConstructor;