Tag: 推土机

推土机:列表的字符串到目前的字段级别映射

我想将DTO (所有字符串数据类型)映射到VO (包含String,int,boolean,Date) StudentDTO private StudentDetailDTO student; StudentDetailDTO: private String sid; private String name; private String createDt; private String studentInd; private List feeDetails; FeeReceiptDTO: private String semisterNum; private String feeAmount; private String paidOn; StudentDetailVO: private int sid; private String name; private Date createDt; private boolean studentInd; private List feeDetails; FeeReceiptVO: private int semisterNum; private Double […]

推土机深度映射将设置为Set

免责声明:这里已经提出了同样的问题。 在dozer中使用中间集合映射深层属性 ,但它没有被接受的答案(对我的案例没有正确的答案)。 所以问题。 我有一个由ComplexObject组成的领域,如下所示 public class ComplexObject { private Set inner; … //other fields, setters and getters } public Class AnotherComplexObject { private String property; … //other fields, setters and getters } 现在,我将ComplexObject映射到Target ,其中Target具有Set属性。 public class Target { private Set targetString; … //other fields, setters and getters } 我想将每个ComplexObject inner.property映射到一个Target targetString。 在语义上看起来像的东西(当然,这不起作用,属性不是Set和Dozer的成员生成MappingException): ComplexObject Target […]

使用Dozer的自定义转换器将对象列表映射到另一个列表

我想要做的是使用Dozer将实体列表映射到它们的字符串ID列表(或多或少)。 显然,它意味着Custom Converter。 我的第一个想法是从MyEntity转换为String,然后对Dozer说“使用这个转换器映射此集合的每个对象”。 但我无法弄清楚如何做到这一点。 所以我的第二个想法是直接将转换器形成一个实体列表到一个字符串列表。 我对这个想法的问题是,我正在讨论一些荒谬的东西,即在构造函数中获取我的列表类型,如下所示(根本不起作用): public MyEntityListConverter() { super(List.class, List.class); } 我不知道如何在一行中传递一个实例化列表的类,而不会声明任何内容。 所以如果有人知道: 如何指定dozer一个在集合映射中使用的对象转换器 如何获取实例化列表类型 尝试的第三种/更好的解决方案

是否可以配置Dozer,以便默认情况下通过setter- / getter方法直接访问字段

我必须映射一个复杂的Java类结构,它通常不会通过set- / get-methods暴露它们的字段(这是给定的,不能更改)。 因此映射只能在直接字段访问上执行。 推土机允许个别字段可访问,但我没有找到设置使这成为一般行为。 因此,我不必为了使其可访问而明确地映射每个字段! 这个选项存在吗? – 在课堂上? – 在全球范围内?

推土机映射JodaTime属性不按预期工作

我正在使用Dozer在Document类和DocumentManagementBean类之间进行映射,这两个都是我自己制作的。 两者都有一个名为dateAdded的Joda DateTime类型的getter和setter属性。 当Document对象d具有属性dateAdded = x时,调用mapper.map(d, DocumentManagementBean.class)所有字段都能正确自动映射(因为我可以完全控制代码库,所以我可以通过没有dozer-config而依赖它简单地在匹配属性名称上),除了dateAdded字段,其中新的DocumentManagementBean dateAdded以其dateAdded属性中的当前 DateTime结束,而不是来自d对象的x。 我期待Dozer试着打电话 dmb.setDateAdded(d.getDateAdded()); 并且只是将dateAdded的值从source添加到target,但它似乎是为dmb对象创建新的DateTime然后让它一个接一个。 有人可以为我解释一下吗?

Dozer String到枚举映射

我有这样的枚举: public enum PartnershipIndicator { VENDOR(“VENDOR”), COPARTNER(“COPARTNER”), BUYER(“BUYER”); String code; private PartnershipIndicator(String code) { this.code = code; } public String getCode() { return code; } public static PartnershipIndicator valueOfCode(String code) { for (PartnershipIndicator status : values()) { if (status.getCode().equals(code)) { return status; } } throw new IllegalArgumentException( “Partnership status cannot be resolved for code ” […]

在dozer中使用中间集合映射深层属性

假设我有以下课程 public class Baz { private List foos = new ArrayList(); } public class Foo { private String string; } public class Target { private List fooStrings = new ArrayList(); } 是否有任何映射我可以使用,给定一个Baz,将它映射到目标类并获得包含在Baz中的foo中的字符串列表? 以下映射不起作用 Baz Target foos.string fooStrings 因为string不是foos的属性(属于List类型)。 我原以为Dozer会非常聪明,如果遇到深度映射中的集合,并且目标也是一个集合,能够将深层属性名称分解为两个并迭代整个集合以获取子元素集合成员的深度映射。 显然不是。 有没有提出Dozerfunction要求的解决方案?

Java到CSV文件,SuperCSV Dozer:如何避免嵌套对象的循环

我有以下课程.. SurveyResponse.java import java.util.List; public class SurveyResponse { private int age; private Boolean consentGiven; private List answers; public SurveyResponse() { } public SurveyResponse(final int age, final Boolean consentGiven, final List answers) { this.age = age; this.consentGiven = consentGiven; this.answers = answers; } public int getAge() { return age; } public List getAnswers() { return answers; […]

如何在Dozer中映射集合

我想做的事情如下: ArrayList objects = new ArrayList(); … DozerBeanMapper MAPPER = new DozerBeanMapper(); … ArrayList newObjects = MAPPER.map(objects, …); 假设: com.me.CustomObject com.me.NewObject id id2 我试过了 : ArrayList holder = new ArrayList(); MAPPER.map(objects, holder); 但是持有者对象是空的。 我还玩了改变第二个参数没有任何运气…

如何获取父基类对象super.getClass()

我有一点Java问题(作为一名C ++程序员)。 我有2个相关的课程: public class Patient() { … } public class PatientPersistent extends Patient { … public void foo() { System.out.println(super.getClass().toString()); } } 这将输出: class org.example.smartgwt.server.model.PatientPersistent 有没有办法获得父类类型? 即 class org.example.smartgwt.server.model.Patient。 这将允许我概括一些我需要在每个孩子中实施的方法,这些方法很糟糕。 谢谢! UPDATE 我正在使用Dozer将我的域Hibernate对象转换为Serializable版本。 我不希望客户知道这一点,因此客户只能看到Patient类。 在服务器端,我执行转换。 public class DataObject { private static final Class DstType = Type; public Object convert(Object srcData, final BeanFactory factory) { […]