Grails run-app:在新连接上执行任意SQL

时间:2011-01-13 16:19:55

标签: tomcat grails jndi

在生产中,我们使用JBoss和JNDI连接数据库。在JNDI配置中,我们有类似的东西:

<new-connection-sql>ALTER SESSION SET CURRENT_SCHEMA=XXX</new-connection-sql>

对于开发,我使用硬编码的DataSources参数将run-app与默认的Tomcat容器(Grails 1.3.2)一起使用。到目前为止,使用我的开发配置中的default_schema参数来估计上述alter session语句就足够了。但由于使用了一些本机Sql语句,这已经不够了。我不想更改SQL以满足我的开发设置(例如,通过在运行时提取default_schema值)。我看到两个选择:

  1. 也许在我的开发配置中可以使用等效的new-connection-sql参数。
  2. 如果没有,也许我可以在我的开发环境中使用JNDI。那没关系,但环顾四周,我找不到如何做到这一点的可靠指示。事实上,人们似乎遇到了麻烦。此外,我不确定Web容器之间是否同等地接受所有JNDI配置,以及Tomcat是否特别支持某种new-connection-sql参数。
  3. 任何人都可以帮我找出解决这个问题的最佳方法吗?谢谢!

    修改

    以下是我正在使用的本机Sql代码(我们的目标是使用触发器更新DATE_CREATE列的旧数据库,并且必须在保存时以这种方式检索它):

    def getCreationDate() {
        if (!creationDate) {
            def sql = new Sql(dataSource)
            sql.query("select DATE_CREATED from some_view where id=?", [id]) {ResultSet rs ->
                rs.next()
                creationDate = rs.getTimestamp("DATE_CREATED")
            }
        }
        return creationDate
    }
    

0 个答案:

没有答案