标签: modelmapper

Spring ModelMapper错误:控制器已经存在映射

我通过DTO从我的表单中获取数据并将其映射到我的Hibernate实体.我想跳过一个日期字段,因为传入的数据是所有字符串,我需要将字符串字段转换为与其他字段分开的日期.其余字段将从传入的DTO直接映射.该过程适用于第一个请求,但在后续请求中,抛出以下异常:

     1) A mapping already exists for com.ibm.calypso.entity.WmCompIdfn.setEffStartDate().

1 error
    at org.modelmapper.internal.Errors.toConfigurationException(Errors.java:250)
    at org.modelmapper.internal.TypeMapImpl.addMappings(TypeMapImpl.java:76)
    at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:110)
    at org.modelmapper.ModelMapper.addMappings(ModelMapper.java:93)
    at com.ibm.calypso.service.CompanyServiceImpl.updateIdentificationIdfn(CompanyServiceImpl.java:48)
    at com.ibm.calypso.controller.CompanyController.updateIdentificationIdfn(CompanyController.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:651)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at com.ibm.calypso.filter.CORSFilter.doFilterInternal(CORSFilter.java:29)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at …
Run Code Online (Sandbox Code Playgroud)

spring hibernate modelmapper

2
推荐指数
1
解决办法
3198
查看次数

应该重用ModelMapper实例来利用缓存的TypeMaps吗?

我正在使用ModelMapper在对象之间进行直接映射.

ModelMapper mapper = new ModelMapper();
// TypeMap created
mapper.map(sourceObj, destObj);

mapper = new ModelMapper();
// TypeMap is recreated
mapper.map(sourceObj, destObj);
Run Code Online (Sandbox Code Playgroud)

我在源代码中发现,如果TypeMap之间不存在sourceObj,并destObj认为这将缓存TypeMap中的getOrCreate方法.

据我所知,这个缓存与mapper实例绑定,这意味着如果我必须使用新的ModelMapper实例第二次映射sourceObjto destObj,它将不得不重新创建TypeMap.

我假定这是一个相当昂贵的操作,说如果我映射的集合sourceObjdestObj.这使我得出结论,我应该重用ModelMapper实例.

这个结论是否正确?

谢谢

java modelmapper

2
推荐指数
1
解决办法
720
查看次数

ModelMapper 在运行时更改通用类型 - 奇怪的行为

我在 Java 中面临一个非常奇怪的行为。我得到了两个没有层次连接的不同类:类模板(类型层次结构是对象 -> A -> B -> 模板)和类 TemplateDto(对象 -> TemplateDto)。

我使用 ModelMapper (org.modelmapper.ModelMapper) 在两个类之间进行映射(由于字段名称相同,因此使用默认映射)。

有以下代码:

List<Template> templates = cvService.getTemplates();
List<TemplateDto> resultDtos = new ArrayList<TemplateDto>();
modelMapper.map(templates,resultDtos);
TemplateDto example = resultDtos.get(0);
Run Code Online (Sandbox Code Playgroud)

最后一行抛出:

java.lang.ClassCastException: com.vs.framework.domain.cv.Template cannot be cast to com.vs.framework.dto.cv.TemplateDto
Run Code Online (Sandbox Code Playgroud)

这很奇怪。当我调试本节时,我看到映射后,resultDtos 是一个 List 类型的列表,而不是 List,这让我大吃一惊。

我试图清理我的 tomcat,maven 清理安装,但它仍然发生。

有任何想法吗?

java generics maven modelmapper

1
推荐指数
1
解决办法
2897
查看次数

如果从Modelmapper中为null,则如何排除整个属性

ModelMapper(http://modelmapper.org/)是否支持排除属性的内容?如果该值为null.

我刚刚找到了PropertyMap.但这对我来说是一个约束.因为我必须描述我想要的特定属性.

像这样.

ModelMapper modelMapper = new ModelMapper();
modelMapper.addMappings(new PropertyMap<TestObject, TestObject>() {
    @Override
    protected void configure() {
        when(Conditions.isNull()).skip().setName(source.getName());
        when(Conditions.isNull()).skip().set...(source.get...());
        when(Conditions.isNull()).skip().set...(source.get...());
        when(Conditions.isNull()).skip().set...(source.get...());
        when(Conditions.isNull()).skip().set...(source.get...());
        when(Conditions.isNull()).skip().set...(source.get...());
    }
});
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我有很多财产和冗长.如果映射属性从它们中为空,如何排除它们.有更舒适的解决方案吗?

谢谢.

java mapper modelmapper

1
推荐指数
1
解决办法
3063
查看次数

配置 ModelMapper 将嵌套对象映射到字段

这是我的 DTO:

public class TagVolumeDTO {
    private Long id;
    private Long idTag;
    //...
}

public class TagTDO {
    private Long id;
    private Long amount;
    //...
}
Run Code Online (Sandbox Code Playgroud)

这是我的实体:

public class TagVolume {
    private Long id;
    private Tag tag;
    //...
}

public class Tag {
    private Long id;
    private Long amount;
    //...
}
Run Code Online (Sandbox Code Playgroud)

我想配置我的 ModelMapper 将 Tag#id 映射到 TagVolumeDTO#idTag。那可能吗?

java modelmapper

1
推荐指数
1
解决办法
1万
查看次数

如何使用 Modelmapper 从另一个对象更新对象字段

我打算编写一个方法,用于更新具有MyObject另一个MyObject对象的非空字段的对象。

private void updateMyObject(MyObject sourceObject, MyObject destinationObject) {
    ModelMapper mapper = new ModelMapper();
    mapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
    mapper.map(sourceObject, destinationObject);
}

public class MyObject {
    long id;

    long durationInMilliSecounds;

    //...getters and setters 
}
Run Code Online (Sandbox Code Playgroud)

在这里destinationObject没有得到更新。任何人都可以建议此代码的问题。

java copy object deep-copy modelmapper

1
推荐指数
1
解决办法
4366
查看次数

JAVA - 使用 ModelMapper 映射表达式,但不使用 setter

我正在使用 ModelMapper 将 JPA 实体映射到 DTO。我在实体上有集合 dto 是由 wsimport 从 wsdl 文件生成的,但集合的设置器不会生成

public class sampleEntity{
    private String name;
    private Collection<String> list;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }    

    public Collection<String> getList() {
        return list;
    }

    public void setList(Collection<String> list) {
        this.list = list;
    }
}

public class sampleDTO{
    private String name;
    private Collection<String> list;

    //getters & setters

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = …
Run Code Online (Sandbox Code Playgroud)

java collections setter modelmapper

1
推荐指数
1
解决办法
2835
查看次数

使用 Spring、MongoDB 使用 ObjectId 测试 REST 端点

我是 MongoDB 新手,正在为 Mongo 支持的 REST Web 服务编写一系列单元测试。这是 /clients/{id} enpoint 的简单测试:

@RunWith(MockitoJUnitRunner.class)
public class ClientsControllerMockMvcStandaloneTest {

    private MockMvc mvc;

    @Mock
    private ClientsRepository clientsRepository;

    @Mock
    private ModelMapper modelMapper;

    @InjectMocks
    private ClientsController clientsController;

    private ExceptionHandlerExceptionResolver createExceptionResolver() {

        ExceptionHandlerExceptionResolver exceptionResolver = new ExceptionHandlerExceptionResolver() {

            @SuppressWarnings("ConstantConditions")
            @Override
            protected ServletInvocableHandlerMethod getExceptionHandlerMethod(final HandlerMethod handlerMethod,
                                                                              final Exception exception) {

                final Method method = new ExceptionHandlerMethodResolver(RestResponseEntityExceptionHandler.class)
                        .resolveMethod(exception);

                final RestResponseEntityExceptionHandler handler = new RestResponseEntityExceptionHandler();

                return new ServletInvocableHandlerMethod(handler, method);
            }
        };

        exceptionResolver.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
        exceptionResolver.afterPropertiesSet();

        return exceptionResolver;
    }

    @Before
    public void …
Run Code Online (Sandbox Code Playgroud)

rest spring mockito mongodb modelmapper

1
推荐指数
1
解决办法
884
查看次数

ModelMapper 无法将 java.util.List 转换为 java.util.List

我尝试使用 ModelMapper 将 @Entity 转换为 DTO,所以出现以下错误:

org.modelmapper.MappingException: ModelMapper mapping errors:

1) Converter org.modelmapper.internal.converter.CollectionConverter@f3e6876 failed to convert java.util.List to java.util.List.

1 error
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我吗?

java modelmapper spring-boot

1
推荐指数
1
解决办法
1万
查看次数

ModelMapper:如何将java.util.Map映射到POJO?

如何将java.util.Map映射到POJO?

以下测试给出了配置错误.

似乎打开了一个类似的问题,但它没有得到解决https://github.com/jhalterman/modelmapper/issues/116.

测试:

package org.me.modelmapper;

import java.util.HashMap;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class MapperTest {


    private ModelMapper modelMapper;


    public MapperTest() {
    }


    public static class Foo {

        public String a;
        public String b;

        public String getA() {
            return a;
        }

        public void setA(String a) {
            this.a = a;
        }

        public String getB() {
            return b;
        }

        public void setB(String b) {
            this.b = b;
        }

    }


    @BeforeMethod
    public void setUpMethod() throws …
Run Code Online (Sandbox Code Playgroud)

java modelmapper

-2
推荐指数
1
解决办法
7423
查看次数