【发布时间】:2015-02-24 13:24:03
【问题描述】:
我正在尝试将 Grails 域对象转换为 Map。我有一个使用 Apache Commons BeanUtils'PropertyUtils.describe 为 POGO 执行此操作的代码。但是,由于 Grails 框架添加的所有内容,在域对象上使用相同的代码是行不通的。我希望能够将任何对象转换为仅包含声明字段的 Map,就像 Grails 如何将域对象转换为 JSON 一样。哪些功能可以帮助我实现这一目标?
【问题讨论】:
-
domainObject.domainClass.persistedProperties能拉近你的距离吗? -
它可以,但我正在寻找一种更通用的解决方案,它适用于(几乎)应用程序中的任何 Groovy 对象。类似于绕过 Groovy 和 Grails 添加的所有功能。
-
不确定是否可以,因为处理属性的方式不同...... groovy 方式(公平)是做类似
domainObject.class.declaredFields.findAll { !it.synthetic }.name的事情,但我不确定这将如何与 Grails 一起使用域类或动态添加的属性 -
我会测试一下。有没有办法创建一个临时域类只是为了测试?像
class MyClass implements GrailsDomainClass这样的东西会做吗?我想创建一个在我的任何实际域类发生更改时不会受到影响的规范。