【发布时间】:2014-01-31 14:31:00
【问题描述】:
Groovy 新手。所以我有一个超类
class AbstractClass {
User user
}
和一个子类
class Category extends AbstractClass {
String name
}
当我尝试在 BootStrap.groovy(我正在使用 Grails)中创建对象时,例如:
User user1 = new User(...).save(failOnError: true)
// I know user1 is properly created
def category1 = new Category(User: user1, name: 'alice').save(failOnError: true)
好吧,我的问题是没有设置用户字段。它是空的。这已更改:以前,我没有保存用户,而是保存了它的 ID(长 ID)并且它正在工作。这里有什么我缺少的魔法吗?
当我将代码更改为:
def category1 = new Category(User: user1, name: 'alice')
category1.setUser user1
category1.save(failOnError: true)
它工作得很好,所以我想这里一定有我遗漏的东西。
感谢您的帮助!
【问题讨论】:
-
在第一种情况下,grails 可能没有将用户持久化到数据库中,它可能只是在 Hibernate 会话中 - 您可以尝试在保存语句中添加 flush:true用户看看这是否有效?例如。 new User(...).save(flush:true, failOnError:true)
-
感谢 bschipp,但这是一个错字。用户应该是用户。
标签: grails groovy superclass named-parameters