2015-11-11 17 views
2

運行以下規範後,該表存在。我預計它永遠不會存在,因爲它應該只存在於最終回滾事務中。AutoRollback不會回滾

import org.specs2.mutable.Specification 
import scalikejdbc.{DB, NamedDB} 
import scalikejdbc.specs2.mutable.AutoRollback 

class MyQuerySpec extends Specification with ArbitraryInput { 

    sequential 

    DBs.setup('myDB) 

    "creating the table" in new AutoRollback { 
    override def db(): DB = NamedDB('myDB).toDB() 
    private val tableName = s"test_${UUID.randomUUID().toString.replaceAll("-", "_")}" 
    private val query = new MyQuery(tableName) 

    query.createTable 
    ok 
    } 
} 

DBs.setup('myDB)不是示例的一部分。但是,如果我刪除它,我得到的異常java.lang.IllegalStateException: Connection pool is not yet initialized.(name:'myDB)

MyQuery.create來源:

SQL(s"DROP TABLE IF EXISTS $tableName").execute().apply() 
SQL(s""" 
    |CREATE TABLE $tableName (
    | id    bigint PRIMARY KEY 
    |)""".stripMargin).execute().apply() 

配置:

db { 
    myDB { 
    driver = "org.postgresql.Driver" 
    url = "****" 
    user = "****" 
    password = "****" 
    poolInitialSize = 1 
    poolMaxSize = 300 
    poolConnectionTimeoutMillis = 120000 
    poolValidationQuery = "select 1 as one" 
    poolFactoryName = "commons-dbcp2" 
    } 
} 

ScalikeJDBC v2.2.9

+1

嘗試在連接屬性中設置'autoCommit =「false」'或'defaultAutoCommit =「false」'。 – Rumoku

+0

看起來'defaultAutoCommit =「false」'已經起作用了。謝謝。經過一個良好的睡眠後會全部確認。 *打哈欠* – Synesso

+0

我錯了。它沒有工作。只有當我檢查時,架構列表沒有在IntelliJ中更新。抱歉。 – Synesso

回答

1

MyQuery#createTable必須接受像隱含參數這個:

def createTable(implicit session: DBSession)