如何在 jOOQ 中使用 Scala 的字符串插值?
How to use Scala's String Interpolation in jOOQ?
我想在 Scala 中使用 jOOQ 的字符串插值功能,例如 resultQuery"SELECT * FROM objects"
:
// 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
设置为隐式来提供这些设置,但我仍然收到相同的异常:
implicit val dsl = DSL.using(con, SQLDialect.POSTGRES_9_4)
implicit val config = new DefaultConfiguration().derive(con)
.derive(SQLDialect.POSTGRES_9_4)
如何为字符串插值正确提供我的设置(连接、方言等)?
您使用字符串插值创建的 ResultQuery
对象不是 "attached",即它不能单独执行。
换句话说,您应该 运行 这样的查询,而不是:
val result = dsl.fetch(q)
我想在 Scala 中使用 jOOQ 的字符串插值功能,例如 resultQuery"SELECT * FROM objects"
:
// 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
设置为隐式来提供这些设置,但我仍然收到相同的异常:
implicit val dsl = DSL.using(con, SQLDialect.POSTGRES_9_4)
implicit val config = new DefaultConfiguration().derive(con)
.derive(SQLDialect.POSTGRES_9_4)
如何为字符串插值正确提供我的设置(连接、方言等)?
您使用字符串插值创建的 ResultQuery
对象不是 "attached",即它不能单独执行。
换句话说,您应该 运行 这样的查询,而不是:
val result = dsl.fetch(q)