2016-10-18 6 views
0

私は自分のJavaアプリケーションで作業しており、datastax javaドライバを使用してデータストアとしてcassandraを使用しています。私はQuerybuilderを使用してクエリを構築しています。クエリビルダ入力値がnullでない場合にのみ更新ステートメントを作成

入力値が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プロパティは、カサンドラの主キーのために働く

感謝。 stクエリービルダーで情報をバインドする前に、repo.getTeam()!= NULLをチェックする必要があります。これは最も簡単な方法の1つです。例については

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));   
} 
関連する問題