2011-03-21 64 views
2

有没有办法改变grails中static hasMany = [myList: Stuff]定义的数据类型?我试图将[hasMany:]引用的数据类型更改为列表?

List<Stuff> myList 
hasMany = [myList : Stuff] 

,但是现有的测试开始呕吐

Stuff._MyContainer_mylistBackref; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value

这表明两者并非在他们是如何被处理方面等同。我在这里做错了什么?

+0

需要更多关于异常上下文的信息'hasMany'的'List'对我来说工作得很好 – 2011-03-21 16:36:57

+0

我的这个行为应该和[myList:Stuff]不一样吗?如果我需要一个集合,这个工作正常,让我相信更大的代码段是好的 – 2011-03-21 17:12:59

+0

是不是你的myList只设置为null并且永远不会被初始化?它不应该读取列表 myList = []? – julkiewicz 2011-03-21 23:01:32

回答

3

5.2.4 of the Grails manual部分所述,这是使集合成为List的正确方法。

我怀疑问题是,默认情况下,限制nullable(false)适用于所有域类属性,并且您试图为此属性保存空值。为了解决这个问题,添加一个约束,使这个属性为空(如果那是你想要

List myList 
static constraints = { 
    myList(nullable: true) 
} 

什么或者,确保之前验证/保存对象的属性不为null。

+0

我只使用addToMyList dyn amic方法,所以不应该自动解决? – 2011-03-22 16:33:49