选项[UUID]类型的eqs?幻影+卡桑德拉+斯卡拉

时间:2015-01-15 02:53:13

标签: scala cassandra phantom-dsl

我使用Phantom框架与Cassandra合作,我尝试在Option字段上执行eqs,例如。

Address.select.where(_.id eqs Some(uuid)).one()

然后我得到"值eqs不是对象"

的成员

有没有办法实现这一目标?我无法弄明白......

id字段是Option [UUID],因为当我在Play Framework中收到POST请求时它必须为null,但我不知道如何在幻像中执行此断言

我还在github上打开了一个问题。

https://github.com/websudos/phantom/issues/173

2 个答案:

答案 0 :(得分:1)

使用

import com.websudos.phantom.Implicits._

工作!!!

答案 1 :(得分:1)

Phantom依赖于一系列隐式转换来提供大部分功能。解决从编译幻像表中获得的大多数错误的一种非常简单的方法是确保相关导入在范围内。

在幻影1.7.0之前

import com.websudos.phantom.Implicits._

1.7.0之后

import com.websudos.phantom.dsl._

除了隐式机制之外,幻像还可以帮助你在Cassandra中使用大量有用对象的别名:

  • 幻像连接器
  • Cassandra一致性级别
  • Keyspaces

在CQL中使用潜在的null值作为PRIMARY KEY的一部分也是错误的,因为CQL主要部分的任何部分都不能null。将处理逻辑移到幻像之外是一个更好的主意。

传统上,表格 - >数据库服务 - > api控制器 - > api方法是构建模块化应用程序的方法,可以更好地分离关注点。最好保持表级别的简单I / O,数据库服务级别的应用程序级别一致性以及更高级别的所有处理逻辑。

希望这有帮助。