Spring尝试在空对象上设置审核字段

时间:2019-02-14 09:40:24

标签: spring null spring-data spring-data-mongodb auditing

Spring-data-mongodb尝试将createdDate添加到空对象,但未这样做。如何配置Spring Audit以忽略空对象,以便它不尝试向其添加审计字段?

我有一个包含所有审核信息的抽象类。两个类(A,B)扩展了此抽象类,并且这两个类(A)中的一个引用了另一个类(B)(可以为空)。如果我尝试保存对B的空引用的A对象。这一切都会失败,因为spring试图将审计信息添加到B的空引用中。

public abstract class AA {
    @Id
    private String id;
    @Version
    private Long version;
    @CreatedDate
    private LocalDateTime createdDate;
    @LastModifiedDate
    private LocalDateTime LastModifiedDate;
}

public class A extends AA {
   private String name;
   @Nullable
   private B b;
}

public class B extends AA {
   private String name;
}

public class ControllerA {

    private AMongoRepository aMongoRepo;

    public void saveSomeA(String name) {
        A a = new A();
        a.setName("Some Name");
        a.setB(null);
        aMongoRepo.save(a); // <-- Fails can not set createdDate on B null
    }
}

我收到的错误消息如下。

org.springframework.data.mapping.MappingException: Cannot lookup property B A.b on null intermediate! Original path was: b.createdDate on A.

谷歌快速搜索将我带到jira.spring.io,这与我遇到的问题相同。

关于如何彻底解决此问题的任何想法?也许从继承转向合成?还是我应该耐心等待新版本?

0 个答案:

没有答案