代码之家  ›  专栏  ›  技术社区  ›  mahadevaprasad A M

推土机参考副本不工作

  •  1
  • mahadevaprasad A M  · 技术社区  · 11 年前

    我的实体由创建 jpa 当我从DB中获取实体并尝试使用推土机进行映射时,该工具和我有类似的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
            }                                   }
    

    推土机映射文件如下所示:

    <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很陌生,请帮我解决这个问题

    1 回复  |  直到 11 年前
        1
  •  2
  •   Koby    11 年前

    使用引用复制时,两个实体上的setter应为相同类型。使用此选项意味着Dozer不进行任何转换/转换,只是同一对象的简单副本。

    如果您不需要此功能,请删除“按引用复制”属性,它应该可以工作(假设您没有Dozer无法自动转换的任何其他复杂类型)。