我正在对在数据库查询期间在某些字段上引发错误的代码以及load方法的一些构造函数进行一些调试。我们在创建类/模型的实例之前在对象上手动设置属性,但由于某些原因,这些字段(DateCreated,DateUpdated)在传递它们后不久就返回null。
我们已经验证这些字段实际上在此之前是非空的,所以我们担心GORM会因为命名约定而删除并尝试替换这些字段,也许我们应该自己手动设置这些字段,并允许GORM管理它们。
有没有办法看到grails应用程序使用的是哪个版本的GORM,也许可以了解这是如何管理这些字段,并使用自己生成的构造函数来处理这个对象?
取决于您使用的grails版本。假设您使用的是较新的grails版本。应该在grails项目内部的gradle.properties
文件中指定GORM版本,它看起来像这样:
grailsVersion=3.3.2
gormVersion=6.1.8.RELEASE
gradleWrapperVersion=3.5
您还可以使用此gradle任务从gradle依赖关系树中找到它:
./gradlew dependencies
在创建类/模型的实例之前,我们在对象上手动设置属性...
在创建对象之前无法在对象上设置属性。
...所以我们担心的是,由于命名约定,GORM正在删除并尝试替换这些字段
你还没有说出属性名称是什么,但如果它们是dateCreated
和lastUpdated
,那么GORM将特别对待这些属性。如果您不想这样,可以关闭自动时间戳,如下所示......
class Person {
Date dateCreated
Date lastUpdated
static mapping = {
autoTimestamp false
}
}
见http://gorm.grails.org/6.1.8/hibernate/manual/index.html#eventsAutoTimestamping的8.1.9节。