【问题标题】:How to set the oracle.jdbc.V8Compatible property如何设置 oracle.jdbc.V8Compatible 属性
【发布时间】:2011-07-07 19:18:53
【问题描述】:

我正在使用带有 Grails 1.3.2 应用程序的 Oracle 10g。我的目标是使用存储时间的所有 Date 列类型的旧架构。我相信我需要在某处将oracle.jdbc.V8Compatible 属性设置为true,以便使用Groovy 的Sql.rows 实例方法(在后台使用ResultSet.getObject)来获取java.sql.Timestamp 保留时间组件的对象而不是java.sql.Date时间分量被截断的对象(请参阅this)。在哪里设置正确/最佳位置/如何在 Grails 应用程序中设置 oracle.jdbc.V8Compatible 属性?

我们使用 DataSource.groovy 进行开发,使用 JBoss JNDI 配置进行生产。

【问题讨论】:

    标签: oracle grails jdbc groovy oracle10g


    【解决方案1】:

    我放弃了 Sql.rows / V8Compatibility 方法,而只是使用自定义函数:

    public static java.sql.Timestamp sqlScalarTimestamp(dataSource, query, params) {
        Sql sql;
        try {
            sql = new Sql(dataSource)
            def result = null
            sql.query(query, params) { rs ->
                if(rs.next())
                    result = rs.getTimestamp(1)
            }
            return result
        } finally {
            if(sql != null)
                sql.close()
        }
    }
    

    【讨论】:

      【解决方案2】:

      对于开发环境我建议在DataSource.groovy中指定:

      dataSource {
          // common settings          
      }
      environments {
          development {
              dataSource {
                  properties = "oracle.jdbc.V8Compatible=true"
              }
          }   
      }
      

      对于生产,您必须将其放在数据源的 connection-property 字段中。

      【讨论】:

      • 嗯,测试开发配置,设置属性,执行clean,然后运行app,但是Sql.rows返回的违规值还是java.sql.Date类型...跨度>
      猜你喜欢
      • 2018-11-13
      • 2021-12-03
      • 1970-01-01
      • 2012-04-16
      • 2014-03-11
      • 2019-10-01
      • 2010-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多