我很难理解如何使用slick profile。
我的问题是:
我正试图通过Alpaka JDBC插件将Slick与Akka流结合使用。网上给出的例子如下:
#Load using SlickSession.forConfig("slick-h2")
slick-h2 {
profile = "slick.jdbc.H2Profile$"
db {
connectionPool = disabled
dataSourceClass = "slick.jdbc.DriverDataSource"
properties = {
driver = "org.h2.Driver"
url = "jdbc:h2:/tmp/alpakka-slick-h2-test"
}
}
}
import scala.concurrent.Future
import akka.Done
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl._
import akka.stream.alpakka.slick.scaladsl._
import slick.jdbc.GetResult
object SlickSourceWithPlainSQLQueryExample extends App {
implicit val system = ActorSystem()
implicit val mat = ActorMaterializer()
implicit val ec = system.dispatcher
implicit val session = SlickSession.forConfig("slick-h2")
// The example domain
case class User(id: Int, name: String)
// We need this to automatically transform result rows
// into instances of the User class.
// Please import slick.jdbc.GetResult
// See also: "http://slick.lightbend.com/doc/3.2.1/sql.html#result-sets"
implicit val getUserResult = GetResult(r => User(r.nextInt, r.nextString))
// This import enables the use of the Slick sql"...",
// sqlu"...", and sqlt"..." String interpolators.
// See also: "http://slick.lightbend.com/doc/3.2.1/sql.html#string-interpolation"
import session.profile.api._
// Stream the results of a query
val done: Future[Done] =
Slick
.source(sql"SELECT ID, NAME FROM ALPAKKA_SLICK_SCALADSL_TEST_USERS".as[User])
.log("user")
.runWith(Sink.ignore)
done.onComplete {
case _ =>
session.close()
system.terminate()
}
}
问题是它与
隐式val会话=滑动会话。forConfig(“slick-h2”)
我尝试如下使用slick会话:
object Main extends App {
implicit val system = ActorSystem()
implicit val mat = ActorMaterializer()
implicit val ec = system.dispatcher
implicit val session = SlickSession.forConfig("pp")
}
我的pp配置如下所示:
pp = {
url = "jdbc:oracle:thin:@52.4.90.244:1521:pp"
driver = oracle.jdbc.OracleDriver
keepAliveConnection = true
connectionPool = disabled
user = "xxxxx"
password = "xxxxx"
}
此代码在运行时中断。
Exception in thread "main" slick.SlickException: Configured profile oracle.jdbc.OracleDriver does not conform to requested profile slick.jdbc.JdbcProfile
at slick.basic.DatabaseConfig$.forConfig(DatabaseConfig.scala:99)
at akka.stream.alpakka.slick.javadsl.SlickSession$.forConfig(package.scala:47)
at akka.stream.alpakka.slick.javadsl.SlickSession$.forConfig(package.scala:44)
但是在另一个代码中,我不使用Akka流,因此也不使用slickSession
object Main extends App {
val db = Database.forConfig("pp")
.....}
代码运行得很好。
我得出结论,这与数据库有关。forconfig(“pp”)和SlickSession。forConfig(“slick-h2”)需要两种不同的东西。
在Slick网站上有一个关于个人资料的解释,但这不太容易理解,提供的指导也很少。它没有列出可用的配置文件及其语法。
因此我的问题是,这两个forConfig之间有什么区别。配置文件是如何工作的,在哪里需要它们。为什么数据库的两个配置文件处理方式不同。
最后也是最重要的一点,甲骨文的简介是什么。在slick 3.2.3中,slick现在是免费的。我在profile=“slick.jdbc.H2Profile$”中找不到它的配置文件
有人能帮助澄清配置文件的差异、预期的内容、配置文件的作用以及Oracle的配置文件是什么吗?
作为@Jeffrey Chung答案的后续内容。以下是解决方案。
implicit val session = SlickSession.forConfig("pp")
import session.profile.api._
配置文件应如下所示:
pp {
profile = "slick.jdbc.OracleProfile$"
db {
url = "..."
driver = oracle.jdbc.OracleDriver
keepAliveConnection = true
connectionPool = disabled
user = "...."
password = "...."
}
}
Slick文档中的升级指南解释了驱动程序和配置文件之间的区别:
Slick的driver
概念已被重命名为profile
,以结束人们对Slick驱动程序与JDBC驱动程序之间的混淆。。。。
至于Alpakka的SlickSession
不接受您的配置的原因,请查看源代码:
object SlickSession {
private final class SlickSessionImpl(val slick: DatabaseConfig[JdbcProfile]) extends SlickSession {
val db: JdbcBackend#Database = slick.db
val profile: JdbcProfile = slick.profile // <-- expects a profile
}
...
}
SlickSession
专门在配置中查找配置文件,这就是定义驱动程序不起作用的原因。
要为Oracle定义配置文件,请使用OracleProfile
。
由于istio-ingressgateway pods的targetPort是8443,那么将端口号定义为443的网关定义如何工作?
应用程序具有上下文路径-->/spring-form-simple-project 因此,为了访问,我使用: 这个控制器又返回student.jsp,当提交这个student.jsp时,它用-->@RequestMapping(value=“/AddStudent”,method=RequestMethod.post)调用controller 任何关于这通常如何工作的指示都将是有帮助的。 谢谢!
Java的switch语句是如何工作的?它如何将所使用变量的值与案例部分中给出的值进行比较?它是否使用或,还是完全是其他原因? 我主要对1.7之前的版本感兴趣。
我正在读MongoDB在行动这本书。我有一个关于的问题。 在中,该书给出了一个多对多关系的示例。它给出了文档和文档。 我理解这里的多对多关联。基本上,可以有一个带有_id等数组的键。所以我不想问类似MongoDB多对多关联的问题 我的问题是关于的,书中给出了关于查询多对多关系的两个示例查询。下面是两个查询: > 是什么意思?我以为只存在于Ruby驱动程序中。 中的是什么?是收藏吗? 中的是什么?
本文向大家介绍hibernate 是如何工作的?相关面试题,主要包含被问及hibernate 是如何工作的?时的应答技巧和注意事项,需要的朋友参考一下 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。