我想在我的grails应用程序中做的是创建许多临时对象,并且当时间合适时...如果时间合适,那么我将保留所有对象。在某些情况下,时间永远是不正确的,因此将它们扔掉并收集垃圾。
但是如果我编写这样的代码:
CollectingEvent collectingEvent = new CollectingEvent()
CollectionUnit collectionUnit = new CollectionUnit()
collectionUnit.collectingEvent = collectingEvent
collectingEvent.collectionUnits.add(collectionUnit)
然后我将得到一个java.lang.NullPointerException,因为collectionUnits没有初始化为有效的集合。
目前尚不清楚我是否应该尝试在CollectingEvent对象中对其进行初始化,或者是否确实想在该对象中使用哪种语法:
class CollectingEvent {
static hasMany = [collectionUnits: CollectionUnit]
}
我是要执行我在GORM /休眠库中应该做的事情吗?还是我必须将所有数据存储在其他位置,并且仅在确定要持久保存GORM对象时填充它?
答案 0 :(得分:0)
暂时性问题与NullPointerException
无关。
请尝试详细解释您所说的瞬态是什么意思,为什么通常的new CollectionEvent()
而不保存该对象不起作用。
NullPointer :
GORM在后台使用了Hibernate,但是在其上面放置了active record层。
因此,当您要将addTo*添加到另一个域类的集合时,应使用Domain Class方法。就像将CollectionUnit
添加到CollectionEvent
一样。
您的代码应如下所示:
CollectingEvent collectingEvent = new CollectingEvent()
CollectionUnit collectionUnit = new CollectionUnit()
collectingEvent.addToCollectionUnits(collectionUnit)
此外,您的CollectionUnit
类应声明它属于CollectionUnit
。我猜想CollectionUnit
的生命周期取决于CollectionEvent
,不是吗?
static belongsTo = [collectingEvent: CollectingEvent]