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

时间:2018-05-29 08:21:18

标签: scala playframework slick

让我更新已经问过question,因为新手不清楚答案。   我试图从Play,Slick 3.2.3和不支持的数据库(准确地说是RDB)开始。我从Play网站上的play-scala-isolated-slick-examples开始。 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表示"其他数据库可以通过trait slick.jdbc.JdbcProfile"的自定义实现来支持。这是否意味着我需要自己实施个人资料?首发是否可以实现?我只需要一个简单的DML,没有DDL,没有连接开始。

1 个答案:

答案 0 :(得分:0)

错误消息告诉您profile需要扩展特征 JdbcProfile,但您传递随播广告对象 { {1}},它不会扩展同名的特征。

回答你的另一个问题 - 是的,我担心你必须自己实施JdbcProfile,而且我相信这对新手来说可能会非常满口,因为Slick的API非常先进。