【发布时间】:2014-04-01 17:39:18
【问题描述】:
我有一个旧版 Oracle 表映射到 Grails 中的 Domain 类,如下所示:
class myDomain implements Serializable {
String id
String baseCountry
Date expireDate
static constraints = {
}
static mapping = {
version false
autoTimestamp false
datasource 'OraDataSource'
table "MY_ACCOUNT"
id column: "LICENSE_NUMBER", generator: "assigned"
baseCountry column: "BASE_COUNTRY"
expireDate column: "EXPIRE_DATE" NOTE: This is an Oracle DATE type
}
我在 Grails 中设置了如下所示的日期:
def now = new Date()
def currentYear = now[YEAR]
def expireDateBegin = new Date()
def expireDateEnd = new Date()
expireDateBegin[YEAR] = currentYear
expireDateBegin[MONTH] = DECEMBER
expireDateBegin[DATE] = 30
expireDateEnd[YEAR] = currentYear +1
expireDateEnd[MONTH] = JANUARY
expireDateEnd[DATE] = 01
当我使用带有日期条件的动态查找器时,不会返回任何结果:
def iftaAccountInfo =
CTaxAccount.findByBaseCountryAndExpireDateBetween(
country,
expireDateBegin,
expireDateEnd,
[max: 1, sort: "expireDate", order: "desc"])
如果我只使用国家/地区的动态查找器,我可以看到结果,并且在查看调试器时,日期被转换为时间戳。
当设置logSql = true 时,SQL 是正确的,但是当 GORM 在查询中设置日期时,日期出现了问题。我想不通。任何帮助将不胜感激。
我也尝试过使用Date().ClearTime() 清除时间。没有变化。
我正在运行 Grails 2.3.4、OJDBC7.jar 和 JDK 1.7_045。 Oracle 数据源设置为 ReadOnly,因为这是我用于查找的旧数据库。
【问题讨论】:
标签: oracle grails grails-orm