【发布时间】:2016-07-18 14:49:54
【问题描述】:
要从 cassandra 表中选择一组记录。
select a1,a2,a3 from tableB where solr_query='...';
其中一些 a1(int 类型)为空。
- 在 Oracle 中,我们可以使用
nvl(a1,0)。 - 在 MS SQL Server 中,我们可以使用
isnull(a1,0)。
我不知道如何以 cassandra 方式处理。
我如何在 Java 中处理这个问题:
创建TableBObject 类,其中所有属性都映射到tableB(cassandra 表)。
使用访问器方法创建Java访问器接口
@Accessor
public interface TableBAccessor
{
@Query(select a1,a2,a3 from tableB where solr_query='...';)
Result<TableBObject> getTableOnSolrQuery (@Param("solrQuery") String solrQuery);
}
在我的调用方法中,我创建了mappingManager 并使用了:
TableBAccessor tableBAccessor = mappingManager.createAccessor();
List<TableBObject> tabBList = tableBAccessor.getTableOnSolrQuery("someSolrQuery").all();
for(TableBObject tabB : tabBList){
int a1 = tabB.getA1(); /*a1 column in cassandra table*/
if(a1!=null){
// replace a1 by some int value (zero / something else)
}
}
以上方式,我在 Java 中处理同样的事情。
这对我来说需要额外的努力。
cassandra 除了在Java 代码中处理相同的解决方案之外,还有什么解决方案?
**我不能这样写吗:**
select isnull(a1,0),a2,a3 from tableB where solr_query='...'; 或
select nvl(a1,0),a2,a3 from tableB where solr_query='...';
??
**我的问题是:**
如果是,那么如何?如果不是,那么为什么?
【问题讨论】:
-
嗨 Surajit,不妨考虑阅读 cassandra 的文档。
-
不,我没有找到任何有用的东西:(