1

好的,我不太确定如何问这个,但我会尝试。我正在使用MapStruct将传入的网络对象映射到数据库对象。我使用Realm.io作为我的本地数据存储。我的一些对象RealmList<Obj>存储了它们的关系,例如:

public class Client extends RealmObject {
    @PrimaryKey
    private String id = UUID.randomUUID().toString();
    private Date createdAt = new Date();
    private Date updatedAt = new Date();
    private RealmList<Contact> contacts; // <-- this guy
    // constructors and getters/setters
}

我使用moshi-jsonapi作为我的反序列化器。等效的 dto 字段是

private String createdAt = new Date();
private String updatedAt = new Date();
private HasMany<Contact> contacts;

问题:让 MapStruct 正确转换HasManyRealmList. 我遇到的问题之一是正确解析关系中的 ISO8601 日期字段。我可以在对象的属性上做,而不是在它的关系上。以下是一个正常运行的 Mapper 示例:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ClientMapper {
    ClientMapper INSTANCE = Mappers.getMapper(ClientMapper.class);

    @Mappings({
            @Mapping(target = "createdAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
            @Mapping(target = "updatedAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    })
    Client resourceToRealm(biz.kusasa.saleboat.jsonapi.resources.Client client);

    List<Client> resourcesToRealms(List<biz.kusasa.saleboat.jsonapi.resources.Client> clients);
}

但是,在映射关系时,这些日期解析规则似乎并不适用。那里有mapstruct专家吗?

4

0 回答 0