我正在开发我的 java 应用程序,并使用 cassandra 作为带有 datastax java 驱动程序的数据存储。我正在使用 Querybuilder 来构建我的查询。
更新查询很棘手,因为我只想在输入值不为空时更改字段。
示例:
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()(或输入)不为空时才更新团队,否则保持原样。有人可以帮忙吗?
谢谢
最佳答案
NOT NULL 属性仅适用于 Cassandra 中的主键。在使用st查询生成器绑定(bind)信息之前,您应该检查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));
}
关于java - 仅当输入值不为空时,查询生成器才创建更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098751/