Slick 3.2.x 在不受支持的数据库上

Slick 3.2.x on unsupported database

让我刷新一下已经问过的question,因为新手的答案不清楚。 我试图从 Play、Slick 3.2.3 和不受支持的数据库(准确地说是 RDB)开始。我从 Play 网站上的 play-scala-isolated-slick-example 开始。 Slick 不支持 RDB 数据库,因此我尝试使用通用 Jdbc 配置文件(我认为适合所有情况):

package test.mydb.slick
import javax.inject.{Inject, Singleton}
import slick.driver.JdbcProfile
import slick.jdbc.JdbcBackend.Database
import test.mydb.{MyTblDAO, Tbl}  // case class defined there
import scala.concurrent.{ExecutionContext, Future}
import scala.language.implicitConversions
import scala.reflect.ClassTag

@Singleton
class SlickMyTblDAO @Inject()(db: Database)(implicit ec: ExecutionContext) 
    extends MyTblDAO with test.mydb.slick.Tables {

//  override val profile: JdbcProfile = _root_.slick.jdbc.JdbcProfile
override val profile: JdbcProfile = slick.driver.JdbcProfile

import profile.api._

def lookup(id: String): Future[Option[MyTbl]] = {....  and so on

此代码未编译,因为:

type mismatch;
[error]  found   : slick.driver.JdbcProfile.type
[error]  required: slick.driver.JdbcProfile
[error]     (which expands to)  slick.jdbc.JdbcProfile
[error]   override val profile: JdbcProfile = slick.driver.JdbcProfile
[error]                                                    ^

不确定我是否完全理解问题的根源,但我想不能直接使用 Jdbc 配置文件。 answer 表示 "other databases can be supported with a custom implementation of the trait slick.jdbc.JdbcProfile"。这是否意味着我需要自己实施配置文件?初学者可以实现吗?我只需要一个简单的 DML,不需要 DDL,也不需要开始的连接。

错误消息告诉您 profile 需要扩展 特征 JdbcProfile,但您将其传递给 伴生对象 JdbcProfile,不扩展同名特征。

回答您的其他问题 - 是的,恐怕您必须自己实施 JdbcProfile,我相信这对于新手来说可能会很麻烦,因为 Slick 的 API 是相当先进。