我一直在努力解决如何在 Dozer 中使用泛型映射到对象,但经过大量搜索后没有找到任何可以帮助我的东西。
我正在尝试将我编写的一些对象映射到其他人创建的一些对象。我开始使用注释并看到类似的错误,因此我转而使用映射文件。然而,这似乎并没有帮助。
这是我想要实现的目标的示例。
public interface MyObject<T extends MyContent> {
T getData();
}
public interface MyStaff extends MyContent {
Demo getDemo();
}
public interface Demo {
Name getName();
}
public interface Name {
String getFirstName();
String setFirstName(String firstName);
}
<mapping>
<class-a>com.example.Staff</class-a>
<class-b>com.example.MyObject</class-b>
<field>
<a>firstName</a>
<b>data.demo.name.firstName</b>
</field>
</mapping>
这是我看到的错误:
org.dozer.MappingException: No read or write method found for field (data.demo.name.firstName) in class (interface com.example.MyObject)
我尝试了另一种排列(例如,使用具体类而不是接口(interface)),但没有任何效果。
最佳答案
我能够让这个工作。看来问题是由于实现类不是公开的。看起来这可能是一个错误,或者至少是一个增强。 Dozer 应该通知您该类无法访问,因为提示未找到该字段具有误导性。
关于java - Dozer 中泛型的深度映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403641/