cassandra忽略更新空值spring boot

sf6xfgos  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(370)

我用的是Spring Boot 2.4.1spring-boot-starter-data-cassandra .
下面是repository类

@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
    }

下面是调用update方法的类:

@Component
public class UpdateTask {

    @Autowired
    private UserRepository userRepository;

    public void removePhoneNumber(UserModel t) {
        t.setPhoneNumber(null);
        userRepository.save(t);
    }

}

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

pdtvr36n

pdtvr36n1#

这可以通过delete cql命令来完成-如果insert语句只为列指定null值,或者没有为列指定任何值,那么驱动程序在执行insert语句时会忽略该列您可以引用该语句https://issues.apache.org/jira/browse/cassandra-3783

bsxbgnwa

bsxbgnwa2#

试试这个:

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

相关问题