конструктор запросов создает инструкции обновления, только если входное значение не равно null

#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));          
}