当前位置: 首页 > 知识库问答 >
问题:

Dozer试图将类映射到它的接口

邰德业
2023-03-14

对于我的数据模型,它基本上是一个包含父子树的树,Dozer在将字段(使用接口类型作为参数)解释为类并尝试使用构造函数实例化时,遇到了成功映射它们的问题。这导致以下例外情况:;

ERROR [MappingProcessor] - Field mapping error -->
MapId: null
Type: null
Source parent class: com.*.shared.model.Module
Source field name: parent
Source field type: class com.*.shared.model.Datawarehouse
Source field value: com.*.shared.model.Datawarehouse@706ce458
Dest parent class: com.*.shared.model.Module
Dest field name: parent
Dest field type: com.*.shared.model.Model
org.dozer.MappingException: java.lang.NoSuchMethodException: com.*.shared.model.Model.<init>()

这是一个相同的类映射,虽然Dozer正确地将源类上的父字段标识为Datawarehouse类型,但由于其父类的模块类上的set方法使用模型接口作为其参数,它似乎试图实例化模型类型,这当然会失败,因为模型是一个没有构造函数的接口,而不是Datawarehouse,如source class字段所示。

我知道使用bean工厂来更改标准映射行为,但我很惊讶这将是解决这个问题的唯一方法。在我看来,Dozer似乎已经拥有了它需要的信息,因为它标识了源类类型,并且对我来说不寻常的是,它会尝试实例化由setter签名指定的接口,而不是它试图映射的类型。

有什么建议吗?

共有1个答案

敖淮晨
2023-03-14

您可以通过在dozer xml配置中使用dozer a-hint和b-hint标签来解决这个问题。指定哪个类应该安装而不是接口。

 类似资料:
  • 我有基类orderItem并且有子类DeviceItem和ServiceItem。我提供了下面的定义。当我收到这个请求时,我执行dozer映射以将jaxb模型转换为我创建的另一个数据模型。我的数据模型也有相同的OrderItem、DerviceItem和DeviceItem类,它们是POJO。当我进行dozer映射时,类会映射到OrderItem(基类)而不是专门的子类。有没有办法执行此用户doz

  • 我正在尝试使用dozer映射将哈希集从PO对象映射到模型对象中的列表。 这是我的源和目标类:- 注意变量定义POImpl类: NoteVariableDefinition类: 我的推土机映射配置为: 每当运行此映射时,总会出现以下错误: 在这种情况下,如何将哈希集映射到ArrayList? 我是推土机映射的新手,因此也无法定义自定义转换器。 推土机文档说明它可以将集合转换为列表 推土机自动在收集类

  • 我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni

  • 在我的服务中,我试图将实体映射到,但是由于方法返回(),我不能像通常用于那样进行如下转换。它为方法抛出“不能在'iterable'中解析方法'stream'”错误。 那么,如何将这个实体映射到?

  • 我已经用MapStruct 1.1工作了几天,但还没有达到我所需要的。 我想做的是:我想将JPA实体映射到DTO,以便在Primefaces项目中实现更好的属性视图绑定。 所以我有我的实体如下: 病人JAVA 人JAVA 我想把这些实体画成这样: 耐心等待。JAVA 潘松多。JAVA 我编写了Mapper类和一个实用程序,就像GitHub上的官方示例中描述的那样(https://github.co

  • 想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。 我所拥有的是, 我想要的是, 其中,