我正在尝试将 Squeryl ORB 与 play 2.0 框架一起使用,但是DB.getConnection()
在初始化期间调用时,我得到:
BadPath:路径参数:无效路径'-找不到 defaultdb 的数据源':路径表达式中不允许标记:'-'(如果您真的需要,可以在此处双引号此标记)
数据库配置如下所示(conf/application.conf):
db.default.url="jdbc:postgresql://localhost/mydb?user=postgres&password=postgres"
db.default.driver=org.postgresql.Driver
db.default.jndiName=defaultdb
和初始化:
object Global extends GlobalSettings {
override def onStart(app: Application) {
SessionFactory.externalTransactionManagementAdapter = Some(() =>
Some(new Session(
DB.getConnection("defaultdb", true),
new PostgreSqlAdapter)))
...
这是正确的方法吗?使用db.default.jndiName
配置值作为参数值是否正确DB.getConnection()
?
还是应该这样做?:
SessionFactory.concreteFactory = Some(() =>
Session.create(
java.sql.DriverManager.getConnection("jdbc:postgresql://..."),
new PostgreSqlAdapter))
这可行,但是我无法使用模板中的 squeryl 查询对象进行迭代,我希望externalTransactionManagementAdapter
.
更新:
我更正了以下内容:DB.getConnection("default", true)
并删除了db.default.jndiName
配置。有了这个我可以得到和使用一个连接,但是第二次getConnection()
被调用,它抛出SQLException: Timed out waiting for a free available connection.
更新 2:
我没有设法使用externalTransactionManagementAdapter
,但concreteFactory
效果很好 - 如下所述。