#java #cassandra #datastax #query-builder
#java #cassandra #datastax #конструктор запросов
Вопрос:
Я работаю над своим Java-приложением и использую cassandra в качестве хранилища данных с драйвером Java datastax. Я использую Querybuilder для построения своих запросов.
Запрос на обновление сложный, потому что я хочу изменить поле, только если входное значение не равно null.
Пример:
Statement st = QueryBuilder.
update("repo_info").
with(QueryBuilder.set("team", repo.getTeam())).
and(QueryBuilder.set("author", repo.getAuthor())).
and(QueryBuilder.set("git_project_url", repo.getGitProjectUrl())).
where(QueryBuilder.eq("name", name)).ifExists();
Итак, здесь я хочу сказать, что команда обновления только в том случае, если repo.getTeam()(или ввод) не равен null, в противном случае оставьте все как было. Может кто-нибудь, пожалуйста, помочь здесь?
Спасибо
Ответ №1:
Свойство NOT NULL работает только для первичного ключа в Cassandra. Прежде чем связывать информацию с помощью st Query-builder, вы должны проверить repo.getTeam() !=NULL . Это один из самых простых способов.
Например:
PreparedStatement st = QueryBuilder.
update("repo_info").
with(QueryBuilder.set("team", QueryBuilder.bindMarker())).
and(QueryBuilder.set("author", QueryBuilder.bindMarker())).
and(QueryBuilder.set("git_project_url", QueryBuilder.bindMarker())).
where(QueryBuilder.eq("name", QueryBuilder.bindMarker())).ifExists();
if(repo.getTeam !=NULL){
session.execute(st.bind(repo.getTeam(),repo.getAuthor(),repo.getGitProjectUrl(),name));
}