我使用弹簧引导2.4.1
和spring-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