34
34
35
35
import java .time .LocalDate ;
36
36
import java .time .LocalDateTime ;
37
+ import java .util .ArrayList ;
38
+ import java .util .List ;
37
39
import java .util .Optional ;
38
40
import java .util .concurrent .TimeUnit ;
39
41
@@ -57,31 +59,71 @@ public void auditForAnnotatedEntity() throws InterruptedException {
57
59
LocalDateTime now = LocalDateTime .now ();
58
60
59
61
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity ();
60
- entity .setName ("Spring Data" );
62
+ entity .setDateOfBirth (LocalDate .of (2000 , 12 , 4 ));
63
+ AuditingName name = new AuditingName ();
64
+ name .setFirst ("Spring" );
65
+ name .setLast ("Data" );
66
+ entity .setName (name );
67
+ // {
68
+ // AuditingEmail email = new AuditingEmail();
69
+ // email.setType("mobile");
70
+ // email.setAddress("[email protected] ");
71
+ // entity.getEmails().add(email);
72
+ // }
73
+ // {
74
+ // AuditingEmail email = new AuditingEmail();
75
+ // email.setType("pc");
76
+ // email.setAddress("[email protected] ");
77
+ // entity.getEmails().add(email);
78
+ // }
79
+
61
80
repository .save (entity );
62
81
63
- assertThat (entity .id ).isNotNull ();
82
+ assertThat (entity .getId () ).isNotNull ();
64
83
assertThat (entity .getCreatedBy ()).isEqualTo ("user01" );
65
84
assertThat (entity .getCreatedDate ()).isAfter (now );
66
85
assertThat (entity .getLastModifiedBy ()).isEqualTo ("user01" );
67
86
assertThat (entity .getLastModifiedDate ()).isAfterOrEqualTo (entity .getCreatedDate ());
68
87
assertThat (entity .getLastModifiedDate ()).isAfter (now );
69
- assertThat (repository .findById (entity .id ).get ()).isEqualTo (entity );
88
+ assertThat (entity .getName ().getId ()).isNotNull ();
89
+ assertThat (entity .getName ().getCreatedBy ()).isEqualTo ("user01" );
90
+ assertThat (entity .getName ().getCreatedDate ()).isAfter (now );
91
+ assertThat (entity .getName ().getLastModifiedBy ()).isEqualTo ("user01" );
92
+ assertThat (entity .getName ().getLastModifiedDate ()).isAfterOrEqualTo (entity .getName ().getCreatedDate ());
93
+ assertThat (entity .getName ().getLastModifiedDate ()).isAfter (now );
94
+ // assertThat(entity.getEmails().get(0).getId()).isNotNull();
95
+ // assertThat(entity.getEmails().get(0).getCreatedBy()).isEqualTo("user01");
96
+ // assertThat(entity.getEmails().get(0).getCreatedDate()).isAfter(now);
97
+ // assertThat(entity.getEmails().get(0).getLastModifiedBy()).isEqualTo("user01");
98
+ // assertThat(entity.getEmails().get(0).getLastModifiedDate()).isAfterOrEqualTo(entity.getEmails().get(0).getCreatedDate());
99
+ // assertThat(entity.getEmails().get(0).getLastModifiedDate()).isAfter(now);
100
+ // assertThat(entity.getEmails().get(1).getId()).isNotNull();
101
+ // assertThat(entity.getEmails().get(1).getCreatedBy()).isEqualTo("user01");
102
+ // assertThat(entity.getEmails().get(1).getCreatedDate()).isAfter(now);
103
+ // assertThat(entity.getEmails().get(1).getLastModifiedBy()).isEqualTo("user01");
104
+ // assertThat(entity.getEmails().get(1).getLastModifiedDate()).isAfterOrEqualTo(entity.getEmails().get(0).getCreatedDate());
105
+ // assertThat(entity.getEmails().get(1).getLastModifiedDate()).isAfter(now);
106
+ assertThat (repository .findById (entity .getId ()).get ()).isEqualTo (entity );
70
107
71
108
LocalDateTime beforeCreatedDate = entity .getCreatedDate ();
72
109
LocalDateTime beforeLastModifiedDate = entity .getLastModifiedDate ();
73
110
74
111
TimeUnit .MILLISECONDS .sleep (100 );
75
112
AuditingConfiguration .currentAuditor = "user02" ;
76
113
77
- entity .setName ("Spring Data JDBC" );
114
+ name .setFirst ("Spring" );
115
+ name .setLast ("Data JDBC" );
78
116
repository .save (entity );
79
117
80
118
assertThat (entity .getCreatedBy ()).isEqualTo ("user01" );
81
119
assertThat (entity .getCreatedDate ()).isEqualTo (beforeCreatedDate );
82
120
assertThat (entity .getLastModifiedBy ()).isEqualTo ("user02" );
83
121
assertThat (entity .getLastModifiedDate ()).isAfter (beforeLastModifiedDate );
84
- assertThat (repository .findById (entity .id ).get ()).isEqualTo (entity );
122
+ assertThat (entity .getName ().getCreatedBy ()).isEqualTo ("user01" );
123
+ assertThat (entity .getName ().getCreatedDate ()).isEqualTo (beforeCreatedDate );
124
+ assertThat (entity .getName ().getLastModifiedBy ()).isEqualTo ("user02" );
125
+ assertThat (entity .getName ().getLastModifiedDate ()).isAfter (beforeLastModifiedDate );
126
+ assertThat (repository .findById (entity .getId ()).get ()).isEqualTo (entity );
85
127
}
86
128
}
87
129
@@ -93,13 +135,35 @@ public void noAnnotatedEntity() {
93
135
DummyEntityRepository repository = context .getBean (DummyEntityRepository .class );
94
136
95
137
DummyEntity entity = new DummyEntity ();
96
- entity .setName ("Spring Data" );
138
+ entity .setDateOfBirth (LocalDate .of (2000 , 12 , 4 ));
139
+ Name name = new Name ();
140
+ name .setFirst ("Spring" );
141
+ name .setLast ("Data" );
142
+ entity .setName (name );
143
+ {
144
+ Email email = new Email ();
145
+ email .setType ("mobile" );
146
+ email .
setAddress (
"[email protected] " );
147
+ entity .getEmails ().add (email );
148
+ }
149
+ {
150
+ Email email = new Email ();
151
+ email .setType ("pc" );
152
+ email .
setAddress (
"[email protected] " );
153
+ entity .getEmails ().add (email );
154
+ }
155
+
97
156
repository .save (entity );
98
157
99
- assertThat (entity .id ).isNotNull ();
100
- assertThat (repository .findById (entity .id ).get ()).isEqualTo (entity );
158
+ assertThat (entity .getId ()).isNotNull ();
159
+ assertThat (entity .getName ().getId ()).isNotNull ();
160
+ assertThat (entity .getEmails ().get (0 ).getId ()).isNotNull ();
161
+ assertThat (entity .getEmails ().get (1 ).getId ()).isNotNull ();
162
+ assertThat (repository .findById (entity .getId ()).get ()).isEqualTo (entity );
163
+
164
+ name .setFirst ("Spring" );
165
+ name .setLast ("Data JDBC" );
101
166
102
- entity .setName ("Spring Data JDBC" );
103
167
repository .save (entity );
104
168
105
169
assertThat (repository .findById (entity .id ).get ()).isEqualTo (entity );
@@ -117,10 +181,14 @@ public void customizeEnableJdbcAuditingAttributes() {
117
181
CustomizeAuditingConfiguration1 .currentDateTime = currentDateTime ;
118
182
119
183
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity ();
120
- entity .setName ("Spring Data JDBC" );
184
+ AuditingName name = new AuditingName ();
185
+ name .setFirst ("Spring" );
186
+ name .setLast ("Data JDBC" );
187
+ entity .setName (name );
188
+
121
189
repository .save (entity );
122
190
123
- assertThat (entity .id ).isNotNull ();
191
+ assertThat (entity .getId () ).isNotNull ();
124
192
assertThat (entity .getCreatedBy ()).isEqualTo ("custom user" );
125
193
assertThat (entity .getCreatedDate ()).isEqualTo (currentDateTime );
126
194
assertThat (entity .getLastModifiedBy ()).isNull ();
@@ -132,10 +200,14 @@ public void customizeEnableJdbcAuditingAttributes() {
132
200
AuditingAnnotatedDummyEntityRepository repository = context .getBean (AuditingAnnotatedDummyEntityRepository .class );
133
201
134
202
AuditingAnnotatedDummyEntity entity = new AuditingAnnotatedDummyEntity ();
135
- entity .setName ("Spring Data JDBC" );
203
+ AuditingName name = new AuditingName ();
204
+ name .setFirst ("Spring" );
205
+ name .setLast ("Data JDBC" );
206
+ entity .setName (name );
207
+
136
208
repository .save (entity );
137
209
138
- assertThat (entity .id ).isNotNull ();
210
+ assertThat (entity .getId () ).isNotNull ();
139
211
assertThat (entity .getCreatedBy ()).isEqualTo ("user" );
140
212
assertThat (entity .getCreatedDate ()).isNull ();
141
213
assertThat (entity .getLastModifiedBy ()).isEqualTo ("user" );
@@ -151,7 +223,41 @@ interface AuditingAnnotatedDummyEntityRepository extends CrudRepository<Auditing
151
223
static class AuditingAnnotatedDummyEntity {
152
224
@ Id
153
225
private Long id ;
154
- private String name ;
226
+ private LocalDate dateOfBirth ;
227
+ private AuditingName name ;
228
+ // private List<AuditingEmail> emails = new ArrayList<>();
229
+ @ CreatedBy
230
+ private String createdBy ;
231
+ @ CreatedDate
232
+ private LocalDateTime createdDate ;
233
+ @ LastModifiedBy
234
+ private String lastModifiedBy ;
235
+ @ LastModifiedDate
236
+ private LocalDateTime lastModifiedDate ;
237
+ }
238
+
239
+ @ Data
240
+ static class AuditingName {
241
+ @ Id
242
+ private Long id ;
243
+ private String first ;
244
+ private String last ;
245
+ @ CreatedBy
246
+ private String createdBy ;
247
+ @ CreatedDate
248
+ private LocalDateTime createdDate ;
249
+ @ LastModifiedBy
250
+ private String lastModifiedBy ;
251
+ @ LastModifiedDate
252
+ private LocalDateTime lastModifiedDate ;
253
+ }
254
+
255
+ @ Data
256
+ static class AuditingEmail {
257
+ @ Id
258
+ private Long id ;
259
+ private String type ;
260
+ private String address ;
155
261
@ CreatedBy
156
262
private String createdBy ;
157
263
@ CreatedDate
@@ -169,7 +275,25 @@ interface DummyEntityRepository extends CrudRepository<DummyEntity, Long> {
169
275
static class DummyEntity {
170
276
@ Id
171
277
private Long id ;
172
- private String name ;
278
+ private LocalDate dateOfBirth ;
279
+ private Name name ;
280
+ private List <Email > emails = new ArrayList <>();
281
+ }
282
+
283
+ @ Data
284
+ static class Name {
285
+ @ Id
286
+ private Long id ;
287
+ private String first ;
288
+ private String last ;
289
+ }
290
+
291
+ @ Data
292
+ static class Email {
293
+ @ Id
294
+ private Long id ;
295
+ private String type ;
296
+ private String address ;
173
297
}
174
298
175
299
@ ComponentScan ("org.springframework.data.jdbc.testing" )
@@ -185,7 +309,16 @@ Class<?> testClass() {
185
309
NamingStrategy namingStrategy () {
186
310
return new NamingStrategy () {
187
311
public String getTableName (Class <?> type ) {
188
- return "DummyEntity" ;
312
+ if (type .getSimpleName ().endsWith ("DummyEntity" )) {
313
+ return "DummyEntity" ;
314
+ }
315
+ if (type .getSimpleName ().endsWith ("Name" )) {
316
+ return "Name" ;
317
+ }
318
+ if (type .getSimpleName ().endsWith ("Email" )) {
319
+ return "Email" ;
320
+ }
321
+ return type .getSimpleName ();
189
322
}
190
323
};
191
324
}
0 commit comments