2014-09-24 20 views
2

获取域对象所有属性的映射(排除关联)的最佳方式是什么?特别是我需要排除hasMany协会域对象属性列表,排除关联

现在,我硬连线的属性列表中排除(集合):

def p = someBook.properties 
p = p.subMap(p.keySet() - ['authors', 'editors', 'formats']) 

我并确保properties返回一个懒惰集合,只要subMap()和keySet()是关心的,所以排除的属性实际上并没有从DB中获取。

但我宁愿不硬编码关联列表。

回答

1

通过丢弃properties中的键值对排除所有关联。

someBook.properties.findAll { !(it.key in someBook.hasMany?.keySet()) } 
+0

'someBook.hasMany'!太精彩了!!很明显,现在你提到它。谢谢 – Tobia 2014-09-24 19:58:17

+0

我会将你的建议与我的'subMap'合并,因为'findAll'也会为排除的属性执行数据库查询 – Tobia 2014-09-24 19:59:42

相关问题