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 是相当先进。
让我刷新一下已经问过的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 是相当先进。