Spring-data-aerospike无法将字段设置为null

时间:2018-10-19 12:35:30

标签: java spring-data repository-pattern aerospike

假设您有一个文档:

@Document(collection = "person-document", touchOnRead = true)
public class PersonDocument {

    @Id
    long id;

    @Field
    String transaction;
}

这就是您创建实体的方式:

PersonDocument person = new PersonDocument(1L, "112e-dfsc-3442-cwce-3434");
repository.save(person);

这就是您尝试更新实体的方式:

PersonDocument person = repository.findOne(1L);
person.setTransaction(null);
repository.save(person);

但是后者不会删除'transaction'的bin值,并且数据存储区中仍然存在值“ 112e-dfsc-3442-cwce-3434”。

此问题的解决方法-使用空字符串更新值,但是考虑到spring数据的其他实现(特别是spring-data-jpa)的工作方式,这有点令人困惑。

如果将实体字段设置为NULL而不是保留旧值,则删除bin值不是更好吗?因为目前NULL属性在更新期间被丢弃。

1 个答案:

答案 0 :(得分:1)

请考虑使用最新版本的spring-data-aerospike

这应该不是问题,我刚刚检查了方案是否可以正常工作。 如果仍然遇到问题-请打开故障单并提供测试用例。