【问题标题】:Dozer Mapping Class level is-accessible推土机映射类级别是可访问的
【发布时间】:2014-10-12 22:34:45
【问题描述】:

我正在使用推土机框架来克隆我的对象。我希望推土机框架在不使用 getter 和 setter 的情况下克隆数据,为此我在类级别设置 is-accessible 属性。但这似乎不起作用。当我在字段级别设置 is-accessible 时,它​​工作正常。

BeanMappingBuilder builder = new BeanMappingBuilder(){

            @Override
            protected void configure() {
                mapping(type(A.class).accessible(true),type(A.class).accessible(true)).exclude("field1").exclude("field2");
                            }

        };
        m.addMapping(builder);

我想要使用 is-accessible 的原因是因为我在类 A 中有一个字段被声明为

private SortedSet<String> foo;

但是getter就像

public Collection<String> getFoo()
{
      return foo;
}

我认为推土机找不到 getter,因为它正在为字段 foo 返回不同的类型。有人可以告诉我这是推土机的错误还是我做错了什么?

提前感谢您的帮助!!

【问题讨论】:

    标签: java dto dozer


    【解决方案1】:

    请注意,如果 Dozer 在源类中找不到 getter 并在目标类中找不到 setter,则会引发错误。

    Afaik,数据类型的变化应该无关紧要,因为它使用反射。

    要回答您的第一个问题,而不是在类级别设置 is-accessible,只公开您需要的字段可能会降低风险。例如:

     DozerBeanMapper dozerBeanMapper = new DozerBeanMapper();
            dozerBeanMapper.addMapping(getBeanMappingBuilder("fieldName",
                                                             SourceClassName.class,
                                                             DestClassName.class));
    
    
    protected BeanMappingBuilder getBeanMappingBuilder(final String fieldName,
                                                           final Class typeA,
                                                           final Class typeB) {
            return new BeanMappingBuilder() {
                @Override
                protected void configure() {
                    mapping(typeA
                        , typeB).fields(
                        field(fieldName).accessible(true), field(fieldName).accessible(true));
    
                }
            };
        }
    

    【讨论】:

    • 但问题是是否有可能以编程方式在类级别上进行。如果不是,是错误还是缺少实现?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多