【发布时间】:2015-01-06 17:17:11
【问题描述】:
我想发送 slick table 作为 akka actor 消息的一部分。这样另一端的远程actor可以连接到数据库,并且可以对mysql数据库进行CRUD操作。我无法理解这些光滑的类型,我发现编译器/eclipse 在抱怨。我怎样才能做到这一点。将灵活查询作为参与者消息的一部分传递是个好主意吗?
object RemoteActorMessages {
case class Create(table: Table[A])
case class RunQuery(query: Query[_, _, _])
case Result(code: Int, message: String)
}
class DBActor extends Actor {
def recieve = {
case Create(table) => createTable(table)
case RunQuery(query) => runQuery(query)
case ... //so on
}
}
def createTable(table: Table[M]): Future[A] = Future {
db.withSession(implicit session => tableQuery[table].ddl.create)
}
def runQuery(query: Query[_, _, _]): Future[A] = Future {
db.withSession { implicit session => {
query.run
}
}
}
警告:代码可能有一些类型错误。观众赞赏谨慎
我对如何将结果发送回消息的发件人感到困惑。例如:query.list.run 返回模型对象列表。那么,我应该如何通过 Result 消息框起来
【问题讨论】:
-
为什么不将详细信息作为部分消息发送,然后在服务器上创建查询。错误/警告到底是什么。
-
@korefn 如何向 DbActor 发送消息以在数据库中创建表。
-
@korefn。我想在 DBActor 消息中合并泛型类型,以便可以将任何具体的表类型发送给它,就像我们在依赖注入中所做的那样。之后 DBActor 可以调用泛型上的 ddl.create 以键入以在数据库中创建表。
标签: mysql scala akka actor slick-2.0