Java 理解scala slick
现在,我正在编写学习scala slick的示例。我正在使用一些github项目和stackoverflow Q&A。下面是我的示例代码:Java 理解scala slick,java,scala,jdbc,slick,jdbc-postgres,Java,Scala,Jdbc,Slick,Jdbc Postgres,现在,我正在编写学习scala slick的示例。我正在使用一些github项目和stackoverflow Q&A。下面是我的示例代码: import scala.slick.driver.PostgresDriver.simple._ import Database.threadLocalSession object TestApp extends App{ case class MyTable(id: Option[Int], foo: String, bar: String)
import scala.slick.driver.PostgresDriver.simple._
import Database.threadLocalSession
object TestApp extends App{
case class MyTable(id: Option[Int], foo: String, bar: String)
object MyTables extends Table[MyTable]("mytable") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def foo = column[String]("foo", O.NotNull)
def bar = column[String]("bar", O.NotNull)
def * = id.? ~ foo ~ bar <> (MyTable, MyTable.unapply _)
def forInsert = foo ~ bar <>
({ (f, l) => MyTable (None, f, l) }, { ep:MyTable => Some((ep.foo, ep.bar)) })
val findByID = createFinderBy(_.id)
}
implicit val session = Database.forURL("jdbc:postgresql://localhost:5432/myserver",
driver="org.postgresql.Driver",
user="myadmin",
password="myadmin")
session withTransaction {
MyTables.ddl.create
MyTables.foo ~ MyTables.bar).insert("Homer", "Simpson")
MyTables.forInsert.insertAll(
MyTable(None, "Marge", "Bouvier"),
MyTable(None, "Carl", "Carlson"),
MyTable(None, "Lenny", "Leonard")
)
}
}
我正在使用以下工具和库:
Scala IDE-2.10
Java版本-1.7.0_11
光滑2.10.0-M4-0.10.0-M2.jar
postgresql-9.2-1003-jdbc4.jar
数据库-PostgreSQL 8.3
这里怎么了?提前感谢。几句话:Database.forURL返回数据库对象,而不是会话。它不需要是隐式的。此外,建议删除threadLocalSession导入,改为使用withTransaction{implicit session=>…}。除此之外,您显示的代码不会编译。在MyTables.foo~MyTables.bar.insertHomer,Simpson中有一个未打开的括号,您可能想这样做:querytables.mapr=>r.foo,r.bar.insertHomer,SimpsonMy guess here配置问题。在Scala 2.10中不存在Scala/Right,它有Scala.util.Right。
CREATE TABLE mytable
(
id serial primary key,
foo VARCHAR(40) not null,
bar VARCHAR(40) not null,
);