我正在使用 ObjectDB,但也想让持久对象中的集合可观察,所以我这样声明它:
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL) List<Widget> widgets = [] as ObservableList
稍后,我创建一个侦听器闭包并附加它:
def widgetChangeListener = {
log.debug "WIDGET CHANGE: $it"
}
widgets.addPropertyChangeListener(widgetChangeListener)
但是,当我尝试持久化集合时,出现此错误:
Attempt to store an instance of a non persistable type com.greymatter.strategy.Harness$_closure1 - field com.greymatter.strategy.Harness.widgetChangeListener (error 303)
有什么方法可以使这个集合持久化,同时保持闭包的可变性,这样我就可以观察到它的变化?ObjectDB 有一个 @Transient 注释,但我不确定如何将它应用于闭包。如果我把它放在 widgetChangeListener 的 def 上,我会得到一个 MissingMethodException。
ObjectDB 和 ObservableList 是互斥的吗?