2011-03-03 304 views
0

我正在使用Oracle 10g和Grails 1.3.2應用程序。我針對的是存儲時間的所有Date列類型的傳統架構。我相信我需要設置oracle.jdbc.V8Compatible屬性true才能使用Groovy的Sql.rows實例方法(使用ResultSet.getObject引擎蓋下),以獲得與保存與截斷時間組件,而不是java.sql.Date對象時組件java.sql.Timestamp對象(見this)的地方。在哪裏設置權限/最佳位置/如何在Grails應用程序中設置oracle.jdbc.V8Compatible屬性?如何設置oracle.jdbc.V8Compatible屬性

我們使用DataSource.groovy進行開發,並使用JBoss JNDI配置進行生產。

回答

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() 
    } 
} 
0

對於開發環境,我建議在DataSource.groovy中指定它:

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

對於生產,你必須把這個在connection-property字段的數據源。

+0

嗯,測試開發配置,我設置的屬性,進行清潔,然後跑了應用,但從'Sql.rows'返回的違規值仍然是'java.sql.Date'類型... – 2011-03-03 13:45:03