如何设置oracle.jdbc.V8Compatible属性

时间:2011-03-03 05:00:02

标签: oracle grails jdbc groovy oracle10g

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我放弃了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()
    }
}