Cassandra忽略了更新null值spring-boot



我使用弹簧引导2.4.1spring-boot-starter-data-cassandra

这是存储库类

@Repository
public interface UserRepository extends CassandraRepository<UserModel, String> {
}

下面是POJO

@Table("user")
public class UserModel {
@PrimaryKeyColumn(name = "userid", type = PrimaryKeyType.PARTITIONED)
private String userId;
@Column("emailid")
private String emailId;
@Column("phonenumber")
private String phoneNumber;
//getters and setters
}

下面是类调用更新方法:

@Component
public class UpdateTask {
@Autowired
private UserRepository userRepository;
public void removePhoneNumber(UserModel t) {
t.setPhoneNumber(null);
userRepository.save(t);
}
}

问题是我想将电话号码字段更新为null,因为用户想删除他们的电话号码。但是cassandra忽略了空值集。如何在cassandra中将值显式设置为null?

试试这个:

public void removePhoneNumber(UserModel t) {
UserModel userModelToUpdate = userRepository.getOne(t.userId);
userModelToUpdate.setPhoneNumber(null);
userRepository.save(userModelToUpdate);
}

可以使用DELETE cql命令完成-如果INSERT语句只为列指定NULL值,或者不为列指定任何值,则驱动程序在执行INSERT语句时会省略该列你可以参考这个https://issues.apache.org/jira/browse/CASSANDRA-3783

最新更新