Orika Map Complex Object是否具有递归结构?

时间:2017-04-07 10:31:18

标签: java orika

目标

我的目标是将UI对象从表示层合并到​​持久层的持久对象。 (使用JDO进行DetachCopy和更新)

详细

想要将UIObject合并到Persistence对象而不会丢失持久性对象的其他状态。我用Orika测试了用例。它成功合并了外部对象,但是对于内部对象,它创建了新对象。所以我失去了持久化对象的持久性状态,实际上是由持久层设置的。

复杂性

外部FXUser对象包含一个内部对象ChildMetaData。 ChildMetaData对象包含外部FXUser对象的列表。在任何级别,对象都存在,需要合并其他需要添加。如果源内部列表没有对象,则需要将其从desitination中删除。 Equals和Hash代码被唯一值覆盖。

 MapperFactory factory = new DefaultMapperFactory.Builder().build();

 BoundMapperFacade<FXUserTO, FXUserVO> mapper = 

 factory.getMapperFacade(FXUserTO.class, FXUserVO.class);

 mapper.map(sourceFxTO, destinationFxVO);

我的对象结构在下面给出了

我的对象结构

持久性对象

public class FXUserVO   implements TalosVO {

   private int userId;

   private ChildMetaDataVO childMetaData;    

   .......other fields 

 ..... getters and setters

@Override

public int hashCode(){

  final int prime = 31;

  int result = 1;

  result = prime * result + userId;

  return result;

 }

@覆盖   public boolean equals(Object obj){

if (this == obj)
    return true;

if (obj == null)
    return false;

if (getClass() != obj.getClass())
    return false;

FXUserVO other = (FXUserVO) obj;

if (userId != other.userId)
    return false;

return true;

 }

}

public class ChildMetaDataVO   implements TalosVO {

   private List<FXUserVO> childUsers;

    .......other fields 

 ..... getters and setters

  }

对应的UI对象

public class FXUserTO   implements TalosTO {

       private int userId;

       private ChildMetaDataTO childMetaData;    

       .......other fields 

     ..... getters and setters
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + userId;
    return result;
}


@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    FXUserTO other = (FXUserTO) obj;
    if (userId != other.userId)
        return false;
    return true;
}
    }

public class ChildMetaDataTO   implements TalosTO {

   private List<FXUserTO> childUsers;

    .......other fields 

 ..... getters and setters

  }

0 个答案:

没有答案