3434
3535import java .time .LocalDate ;
3636import java .time .LocalDateTime ;
37+ import java .util .ArrayList ;
38+ import java .util .List ;
3739import java .util .Optional ;
3840import java .util .concurrent .TimeUnit ;
3941
@@ -57,31 +59,71 @@ public void auditForAnnotatedEntity() throws InterruptedException {
5759 LocalDateTime now = LocalDateTime .now ();
5860
5961 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+
6180 repository .save (entity );
6281
63- assertThat (entity .id ).isNotNull ();
82+ assertThat (entity .getId () ).isNotNull ();
6483 assertThat (entity .getCreatedBy ()).isEqualTo ("user01" );
6584 assertThat (entity .getCreatedDate ()).isAfter (now );
6685 assertThat (entity .getLastModifiedBy ()).isEqualTo ("user01" );
6786 assertThat (entity .getLastModifiedDate ()).isAfterOrEqualTo (entity .getCreatedDate ());
6887 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 );
70107
71108 LocalDateTime beforeCreatedDate = entity .getCreatedDate ();
72109 LocalDateTime beforeLastModifiedDate = entity .getLastModifiedDate ();
73110
74111 TimeUnit .MILLISECONDS .sleep (100 );
75112 AuditingConfiguration .currentAuditor = "user02" ;
76113
77- entity .setName ("Spring Data JDBC" );
114+ name .setFirst ("Spring" );
115+ name .setLast ("Data JDBC" );
78116 repository .save (entity );
79117
80118 assertThat (entity .getCreatedBy ()).isEqualTo ("user01" );
81119 assertThat (entity .getCreatedDate ()).isEqualTo (beforeCreatedDate );
82120 assertThat (entity .getLastModifiedBy ()).isEqualTo ("user02" );
83121 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 );
85127 }
86128 }
87129
@@ -93,13 +135,35 @@ public void noAnnotatedEntity() {
93135 DummyEntityRepository repository = context .getBean (DummyEntityRepository .class );
94136
95137 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+
97156 repository .save (entity );
98157
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" );
101166
102- entity .setName ("Spring Data JDBC" );
103167 repository .save (entity );
104168
105169 assertThat (repository .findById (entity .id ).get ()).isEqualTo (entity );
@@ -117,10 +181,14 @@ public void customizeEnableJdbcAuditingAttributes() {
117181 CustomizeAuditingConfiguration1 .currentDateTime = currentDateTime ;
118182
119183 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+
121189 repository .save (entity );
122190
123- assertThat (entity .id ).isNotNull ();
191+ assertThat (entity .getId () ).isNotNull ();
124192 assertThat (entity .getCreatedBy ()).isEqualTo ("custom user" );
125193 assertThat (entity .getCreatedDate ()).isEqualTo (currentDateTime );
126194 assertThat (entity .getLastModifiedBy ()).isNull ();
@@ -132,10 +200,14 @@ public void customizeEnableJdbcAuditingAttributes() {
132200 AuditingAnnotatedDummyEntityRepository repository = context .getBean (AuditingAnnotatedDummyEntityRepository .class );
133201
134202 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+
136208 repository .save (entity );
137209
138- assertThat (entity .id ).isNotNull ();
210+ assertThat (entity .getId () ).isNotNull ();
139211 assertThat (entity .getCreatedBy ()).isEqualTo ("user" );
140212 assertThat (entity .getCreatedDate ()).isNull ();
141213 assertThat (entity .getLastModifiedBy ()).isEqualTo ("user" );
@@ -151,7 +223,41 @@ interface AuditingAnnotatedDummyEntityRepository extends CrudRepository<Auditing
151223 static class AuditingAnnotatedDummyEntity {
152224 @ Id
153225 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 ;
155261 @ CreatedBy
156262 private String createdBy ;
157263 @ CreatedDate
@@ -169,7 +275,25 @@ interface DummyEntityRepository extends CrudRepository<DummyEntity, Long> {
169275 static class DummyEntity {
170276 @ Id
171277 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 ;
173297 }
174298
175299 @ ComponentScan ("org.springframework.data.jdbc.testing" )
@@ -185,7 +309,13 @@ Class<?> testClass() {
185309 NamingStrategy namingStrategy () {
186310 return new NamingStrategy () {
187311 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+ return type .getSimpleName ();
189319 }
190320 };
191321 }
0 commit comments