想象一下以下域类:
class User {
static hasMany = [ roles: Role ]
List<Role> roles
User() {
roles = new ObservableList<>()
roles.addPropertyChangeListener({ event -> ... } as PropertyChangeListener)
}
}
class Role {
String name
}
我的意图是每次在roles
集合中添加/删除元素时执行某些操作;这包括1)从数据库填充roles
,以及2)用户进一步操纵。如果刚刚创建了一个User实例(并且没有持久化),我可以捕获通知。在调用save()方法之后,ObservableList仍然完好无损。但稍后,例如,当我从控制器执行User.find ...()时,原始的ObservableList
被Hibernate的org.hibernate.collection.PersistentList
取代,显然不再有通知了。
如何实现与GORM兼容的更改感知列表?