我正在使用带有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配置进行生产。
答案 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()
}
}