gpt4 book ai didi

java - 推土机试图将一个类映射到它的接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:58 25 4
gpt4 key购买 nike

我的数据模型基本上是一棵有 parent child 的树,Dozer 在将字段(使用接口(interface)类型作为参数)解释为一个类并尝试实例化它时,在成功映射它们时遇到了问题与构造函数。这导致以下异常;

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 类型,因为其父类的 Module 类上的 set 方法使用 Model 接口(interface)作为其参数,看起来试图实例化模型的类型,这当然会失败,因为模型是一个没有构造函数的接口(interface),而不是数据仓库,如源类字段所示。

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

有什么建议吗?

最佳答案

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

关于java - 推土机试图将一个类映射到它的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17400946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com