【发布时间】:2016-04-11 16:06:41
【问题描述】:
我有一个 cassandra 行
slug | logo | name | priority
------+------+------+----------
test | null | Test | null
我正在使用 datastax java 驱动程序来查询这个结果,然后将 Row 映射到 Scala 案例类:
Brand(r.getString("slug"), r.getString("name"), Option( r.getInt("priority") ) ,Option( r.getString("logo")))
结果应该是:
Brand(test,Test,None,None)
但我明白了:
Brand(test,Test,Some(0),None)
插入时未设置 priority 和 logo 字段。如果我只是打印该行,我会得到正确的结果:
[Row[test, NULL, Test, NULL]]
有什么想法吗?
【问题讨论】:
-
好吧,scala中的
Int是AnyVal而不是AnyRef,因此它不能是null(就像java中的int)所以这就是为什么你得到你的null int为0 /也许你的数据库设计是错误的?也许你应该使用其他的东西来表示缺失/未知的优先级,比如 -1,或者使用字符串,或者这个 api 提供了一些其他方法,但我不熟悉。
标签: scala cassandra cassandra-2.0 datastax-java-driver