-
Notifications
You must be signed in to change notification settings - Fork 698
Closed
Description
Kazuki Shimizu opened DATACMNS-1296 and commented
The annotation based auditing(supported by DATACMNS-1274) does not work when a nested bean is null
.
I think should be ignore when a target nested bean is null.
class Embedded {
@CreatedDate Instant created;
@CreatedBy String creator;
@LastModifiedDate Instant modified;
@LastModifiedBy String modifier;
}
class WithEmbedded {
Embedded embedded;
}
@Test
public void writesNestedAuditingDataWhenDataIsNull() {
WithEmbedded target = new WithEmbedded();
// target.embedded = new Embedded();
Optional<AuditableBeanWrapper> wrapper = factory.getBeanWrapperFor(target);
assertThat(wrapper).hasValueSatisfying(it -> {
Instant now = Instant.now();
String user = "user";
it.setCreatedBy(user);
it.setLastModifiedBy(user);
it.setLastModifiedDate(now);
it.setCreatedDate(now);
Embedded embedded = target.embedded;
assertThat(embedded).isNull();
});
}
Test result is as follow:
writesNestedAuditingDataWhenObjectIsNull(org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests) Time elapsed: 1.035 sec <<< ERROR!
org.springframework.data.mapping.MappingException: Cannot lookup property org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests$Embedded org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests$WithEmbedded.embedded on null intermediate! Original path was: embedded.creator on org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests$WithEmbedded.
at org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests.lambda$writesNestedAuditingDataWhenObjectIsNull$6(MappingAuditableBeanWrapperFactoryUnitTests.java:223)
at org.springframework.data.auditing.MappingAuditableBeanWrapperFactoryUnitTests.writesNestedAuditingDataWhenObjectIsNull(MappingAuditableBeanWrapperFactoryUnitTests.java:218)
Same issue is occurred on DATAJDBC-204 (spring-projects/spring-data-relational#64)
Affects: 2.1 M2 (Lovelace), 2.4 M1 (2020.0.0), 2.1.19 (Lovelace SR19), 2.2.9 (Moore SR9), 2.3.2 (Neumann SR2)
Backported to: 2.3.3 (Neumann SR3)
11 votes, 10 watchers