Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selma地图列表<;T>;托特_Java_Mapping_Object Object Mapping - Fatal编程技术网

Java Selma地图列表<;T>;托特

Java Selma地图列表<;T>;托特,java,mapping,object-object-mapping,Java,Mapping,Object Object Mapping,我正在使用Selma,我有以下课程: public class Customer { private int id; private String email; private String firstName; private String lastName; private Date registeredDate; private List<Address> addresses; } 有没有办法将(int)id转换为(Strin

我正在使用Selma,我有以下课程:

public class Customer
{
    private int id;
    private String email;
    private String firstName;
    private String lastName;
    private Date registeredDate;
    private List<Address> addresses;

}
有没有办法将(int)
id
转换为(String)
id
,并将
列表中的第一个地址设置为
address1
,将第二个地址设置为
address2

我曾考虑使用拦截器,但这样我将不得不手动映射
地址
类。有没有一种方法可以使用Selma自动映射拦截器中的地址类?例如:

 public class CustomerCustomMapper
{
    public void interceptMyCustomerToCustomer(com.mycode.domain.Customer source, Customer destination) {

        if(source.getAddresses() != null && source.getAddresses().size() > 0)
        {
            com.mycode.domain.Address myAddress1 = source.getAddresses().get(0);

            AddressMapper addressMapper = Selma.builder(AddressMapper.class).build();

            Address address1 = addressMapper.mapAddress(myAddress1);
            destination.setAddress1(address1);

           // do the same for address2
        }
    }

编辑

关于映射Address类,我按照上面的方式进行了映射。我创建了一个
AddressMapper
,里面有以下代码:
地址到地址(com.mycode.domain.Address)

然后我创建了一个地址映射器,并使用它自动映射地址:

AddressMapper addressMapper = Selma.builder(AddressMapper.class).build();
至于id,目前我必须为我映射的每个类创建一个拦截器(几乎每个类都有一个id(SQL)),并手动设置id,如下所示:
destination.setId(Integer.toString(source.getId())


事实上,这很令人沮丧,但遗憾的是,我找不到更好的选择。

列出拦截器的地址是一个很好的答案

对于int-to-String,可以指定从int到String的自定义映射器映射(请参阅)

但我建议使用抽象映射器,而不是构建新的映射器来映射地址。这样,您就可以将特定代码集成到映射器中,并直接调用地址映射器方法(请参阅)

对于toString,您还可以向Github添加一个功能请求。我很乐意添加此功能

AddressMapper addressMapper = Selma.builder(AddressMapper.class).build();