質問編集履歴
1
デバッグ後の結果
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
### やりたいこと
|
2
2
|
ユーザ登録機能の作成。
|
3
3
|
###現状
|
4
|
-
ユーザ登録時に作成者(created_by)などのシステム制御項目を挿入するようにしたいが、
|
4
|
+
ユーザ登録時に作成者(created_by)などのシステム制御項目を挿入するようにしたいが、Insert文のcreated_byのvalueにnullが入ってしまうためエラーで落ちる。
|
5
|
-
(ユーザ情報を格納するテーブルで「created_by(作成者)」を
|
5
|
+
(ユーザ情報を格納するテーブルで「created_by(作成者)」をnot nullに指定しているため)
|
6
|
+
created_byへ値を設定している(ハズ)の箇所は**DefaultEntityListener**というクラスです。ここで値が設定できていません。
|
7
|
+
以下にコードを示していますが、**DefaultEntityListener**の`val createdBy = AuditInfoHolder.getAuditUser();`の部分で値が取得できていないことがわかりました。
|
6
8
|
以下エラー画像(created_byは作成者)
|
7
|
-
](6b70625fc1ce5fb824517be868c96086.jpeg)
|
8
10
|
|
9
11
|
###テーブル定義
|
10
12
|
|
@@ -34,49 +36,50 @@
|
|
34
36
|
```User
|
35
37
|
package com.example.demo.domain.dto;
|
36
38
|
|
39
|
+
import com.example.demo.domain.dto.common.DomaDtoImpl;
|
37
40
|
import lombok.Data;
|
38
41
|
import org.seasar.doma.*;
|
39
42
|
|
40
43
|
@Entity
|
41
44
|
@Data
|
42
45
|
@Table(name = "users")
|
43
|
-
public class User extends
|
46
|
+
public class User extends DomaDtoImpl {
|
44
47
|
//自動採番設定
|
45
48
|
@Id
|
46
49
|
@Column(name = "user_id")
|
47
50
|
@GeneratedValue(strategy= GenerationType.IDENTITY)
|
48
|
-
|
51
|
+
Long id;
|
49
52
|
|
50
53
|
@Column
|
51
|
-
|
54
|
+
String name;
|
52
55
|
|
53
56
|
@Column
|
54
|
-
|
57
|
+
String email;
|
55
58
|
|
56
59
|
@Column
|
57
|
-
|
60
|
+
String password;
|
58
61
|
|
59
62
|
}
|
60
63
|
|
64
|
+
|
61
65
|
```
|
62
66
|
|
63
67
|
DomaDto.javaではシステム制御項目を定義している。また、自動的に更新するようにDefaultEntityListener.javaを作成し指定している。
|
64
|
-
```
|
68
|
+
```DomaDtoImpl
|
65
|
-
package com.example.demo.domain.dto;
|
69
|
+
package com.example.demo.domain.dto.common;
|
66
70
|
|
67
71
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
68
72
|
import lombok.Data;
|
69
73
|
import org.seasar.doma.Column;
|
70
74
|
import org.seasar.doma.Entity;
|
75
|
+
import org.seasar.doma.Version;
|
71
76
|
|
72
77
|
import java.io.Serializable;
|
73
|
-
import java.time.LocalDate;
|
74
78
|
import java.time.LocalDateTime;
|
75
|
-
import java.util.Date;
|
76
79
|
|
77
80
|
@Entity(listener = DefaultEntityListener.class)// 自動的にシステム制御項目を更新するためにリスナーを指定する
|
78
81
|
@Data
|
79
|
-
public class
|
82
|
+
public abstract class DomaDtoImpl implements DomaDto,Serializable {
|
80
83
|
|
81
84
|
// 作成者
|
82
85
|
@JsonIgnore
|
@@ -108,10 +111,11 @@
|
|
108
111
|
@Column
|
109
112
|
private LocalDateTime deleted_at;
|
110
113
|
|
111
|
-
//
|
114
|
+
// 楽観的排他制御で使用する改定番号
|
115
|
+
@Version
|
116
|
+
@Column(name = "version")
|
112
117
|
@JsonIgnore
|
113
|
-
@Column
|
114
|
-
|
118
|
+
Integer version;
|
115
119
|
|
116
120
|
}
|
117
121
|
|
@@ -120,10 +124,9 @@
|
|
120
124
|
|
121
125
|
```DefaultEntityListener
|
122
126
|
|
123
|
-
package com.example.demo.domain.dto;
|
127
|
+
package com.example.demo.domain.dto.common;
|
124
128
|
|
125
129
|
import com.example.demo.common.utils.ReflectionUtils;
|
126
|
-
import com.example.demo.domain.dto.DomaDto;
|
127
130
|
import com.example.demo.domain.exception.DoubleSubmitErrorException;
|
128
131
|
import lombok.NoArgsConstructor;
|
129
132
|
import lombok.extern.slf4j.Slf4j;
|