我借用C++的“切片”意思。如何“切片”一个POJO
比方说,我哈瓦是威盛的Hibernate持久化一个简单的POJO:
class Person {
private long id;
private String name;
...
// getters and setters here
...
}
现在,当我从数据库中检索对象,我知道这是“仪表”由Hibernate(其真正的班是一个人 - 派生自动生成)。我想将它转换回“普通”人物。例如,将使用Tnat将对象提交给XStream,并将结果仅包含Person包含的结果。
我可以通过定义一个拷贝构造函数来实现,但我不想为每个ORM类编写拷贝构造函数的麻烦(更不用说违反DRY原则了)。
所以我在想,如果
a)是已经有一个Java的lib是不是吗? b)如果不是,使用反射写一个是否可行?
在(b)的情况下,任何recomendations /准则/代码骨架将不胜感激。
这是一个完美的解决方案。它甚至解决了我没有提到的另一个问题,即一对多关系需要表示为持久对象中的容器和XML-ed对象中的数组。非常感谢。 – 2010-07-22 00:43:52
Dozer的真正目的是将TypeA映射到TypeB,并且能够将该映射存储在XML配置中而不是Java代码中,所以它对于这种使用来说也是完美的(真正从一种类型映射到另一种类型)。 – 2010-07-22 00:57:25