选项 [UUID] 类型上的 eqs? Phantom + Cassandra + Scala

eqs on Option[UUID] type? Phantom + Cassandra + Scala

我正在使用 Phantom 框架与 Cassandra 一起工作,我正在尝试在选项字段上执行 eqs,例如。

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

然后我得到"value eqs is not a member of object"

有没有办法做到这一点?我想不通...

id 字段是一个 Option[UUID],因为当我在 Play Framework 中收到 POST 请求时它必须为 null,但我不知道如何在 phantom[ 中断言=12=]

我也在 github 上开了一个问题。

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

使用

import com.websudos.phantom.Implicits._

有效!!!

Phantom 依靠一系列隐式转换来提供大部分功能。修复编译 phantom tables 时出现的大部分错误的一种非常简单的方法是确保相关导入在范围内。

幻影1.7.0之前

import com.websudos.phantom.Implicits._

1.7.0 之后

import com.websudos.phantom.dsl._

除了隐式机制之外,phantom 还将帮助您为 Cassandra 中的大量有用对象设置别名:

  • 幻像连接器
  • Cassandra 一致性级别
  • 键空间

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

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

希望对您有所帮助。