2015-11-30 59 views
1

我想用jOOQ Scala中的字符串插值特徵,例如resultQuery"SELECT * FROM objects"如何在jOOQ中使用Scala的字符串插值?

// setup connection 
val con = DriverManager.getConnection(url, userName, password) 

// create DSLContext 
val dsl = DSL.using(con, SQLDialect.POSTGRES_9_4) 

// normal use of DSLContext 
dsl.resultQuery("SELECT * FROM objects") 

// intented use of string interpolation 
val q = resultQuery"SELECT * FROM objects" 

val result = q.fetch() 
println(result) 

運行該代碼(沒有任何外部結構等)在下面的例外的結果:

Exception in thread "main" org.jooq.exception.DetachedException: Cannot execute query. No Connection configured 
    at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:312) 
    at org.jooq.impl.AbstractResultQuery.fetch(AbstractResultQuery.java:305) 
    ... 

看來SQLInterpolation正在使用默認設置。我試圖通過設置DSLContext以及Configuration爲implicits提供這些設置,但我仍然收到了同樣的異常:

implicit val dsl = DSL.using(con, SQLDialect.POSTGRES_9_4) 
implicit val config = new DefaultConfiguration().derive(con) 
               .derive(SQLDialect.POSTGRES_9_4) 

如何正確地提供我的設置(連接,方言等)的字符串插值?

回答

3

ResultQuery使用字符串插值創建的對象不是「附加」的,即它不能自行執行。

換句話說,你應該運行這樣的查詢,而不是:

val result = dsl.fetch(q) 
+0

這是缺失的一環。我不知道我錯過了那一個。 – r0estir0bbe

相關問題