推土机按引用复制不起作用
Dozer copy-by-reference not working
我有通过 jpa
工具创建的实体,当我从数据库中获取实体并尝试使用推土机进行映射时,我有类似的 DTO。
实体和 DTO 看起来像
class A class A1
{ {
private B b; private B1 b1;
private C c; private C1 c;
getter/setter getter/setter
}
class B class B1
{ {
private C c; private C1 c;
getter/setter getter/setter
} }
class C class C1
{ {
private A a; private A1 a;
private B b; private B1 b;
getter/setter getter/setter
} }
Dozer 映射文件如下所示:
<mapping>
<class-a>com.entity.A</class-a>
<class-b>com.dto.A1</class-b>
<field copy-by-reference="true">
<a>b</a>
<b>b1</b>
</field>
<field copy-by-reference="true">
<a>c</a>
<b>c1</b>
</field>
</mapping>
而且我遇到了如下异常:
org.dozer.MappingException: Illegal object type for the method 'setb1'.
Expected types:
com.dto.B1
Actual types:
com.entity.B
我是 Dozer 的新手,请帮我解决这个问题
使用按引用复制时,两个实体上的 setter 应该属于同一类型。使用这意味着没有 conversion/transformation 是由 Dozer 完成的,只是同一对象的简单副本。
如果您不需要此功能,请删除 "copy-by-reference" 属性 它应该可以工作(假设您没有 Dozer 无法自动转换的任何其他复杂类型) .
我有通过 jpa
工具创建的实体,当我从数据库中获取实体并尝试使用推土机进行映射时,我有类似的 DTO。
实体和 DTO 看起来像
class A class A1
{ {
private B b; private B1 b1;
private C c; private C1 c;
getter/setter getter/setter
}
class B class B1
{ {
private C c; private C1 c;
getter/setter getter/setter
} }
class C class C1
{ {
private A a; private A1 a;
private B b; private B1 b;
getter/setter getter/setter
} }
Dozer 映射文件如下所示:
<mapping>
<class-a>com.entity.A</class-a>
<class-b>com.dto.A1</class-b>
<field copy-by-reference="true">
<a>b</a>
<b>b1</b>
</field>
<field copy-by-reference="true">
<a>c</a>
<b>c1</b>
</field>
</mapping>
而且我遇到了如下异常:
org.dozer.MappingException: Illegal object type for the method 'setb1'.
Expected types:
com.dto.B1
Actual types:
com.entity.B
我是 Dozer 的新手,请帮我解决这个问题
使用按引用复制时,两个实体上的 setter 应该属于同一类型。使用这意味着没有 conversion/transformation 是由 Dozer 完成的,只是同一对象的简单副本。
如果您不需要此功能,请删除 "copy-by-reference" 属性 它应该可以工作(假设您没有 Dozer 无法自动转换的任何其他复杂类型) .