假设您有一个文档:
@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
属性在更新期间被丢弃。
答案 0 :(得分:1)
请考虑使用最新版本的spring-data-aerospike。
这应该不是问题,我刚刚检查了方案是否可以正常工作。 如果仍然遇到问题-请打开故障单并提供测试用例。