2016-01-26 74 views
1

我首先想說的是我是新來的油滑和我正在使用版本3.1.1。我一直在閱讀手冊,但我無法讓我的查詢工作。我的連接字符串有問題,或者我的Slick代碼有問題。我從這裏得到了我的配置http://slick.typesafe.com/doc/3.1.1/database.html以及我的更新示例,從這裏開始的http://slick.typesafe.com/doc/3.1.1/queries.html的底部。好的,這裏是我的代碼油滑3爲斯卡拉更新查詢不起作用

應用程序配置。

mydb= { 
    dataSourceClass = org.postgresql.ds.PGSimpleDataSource 
    properties = { 
    databaseName = "Jsmith" 
    user = "postgres" 
    password = "unique" 
    } 
    numThreads = 10 
} 

我的控制器 - 數據庫表被稱爲 - 關係

package controllers 
import play.api.mvc._ 
import slick.driver.PostgresDriver.api._ 

class Application extends Controller { 

    class relations(tag: Tag) extends Table[(Int,Int,Int)](tag, "relations") { 
    def id = column[Int]("id", O.PrimaryKey) 
    def me = column[Int]("me") 
    def following = column[Int]("following") 
    def * = (id,me,following) 

    } 

    val profiles = TableQuery[relations] 

    val db = Database.forConfig("mydb") 


    try { 
    // ... 
    } finally db.close() 




    def index = Action { 

    val q = for { p <- profiles if p.id === 2 } yield p.following 
    val updateAction = q.update(322) 
    val invoker = q.updateStatement 
    Ok() 
    } 

} 

可能是自己做錯了什麼上面我的代碼?我有一個單獨的項目,使用普通的JDBC,並且此配置完美適用於它

db.default.driver=org.postgresql.Driver 
db.default.url="jdbc:postgresql://localhost:5432/Jsmith" 
db.default.user="postgres" 
db.default.password="unique" 

回答

1

您尚未運行您的操作。 db.run(updateAction)分別執行查詢你的行動數據庫(未經測試)上:

def index = Action.async { 
    val q = for { p <- profiles if p.id === 2 } yield p.following 
    val updateAction = q.update(322) 

    val db = Database.forConfig("mydb") 
    db.run(updateAction).map(_ => Ok()) 
} 

db.run()返回Future是最終完成。然後簡單地將它映射爲正在使用的Result

q.updateStatement另一方面只是生成一個sql語句。這在調試時很有用。

+0

噢好吧,非常感謝,很有效,工作。 – user1591668