2017-03-12 2 views
1

는이 같은 방법이 있습니다목록 <Entity>을 목록으로 변환하는 방법 <DTO> 개체 매퍼를 사용하는 개체는 무엇입니까?

public List<CustomerDTO> getAllCustomers() { 
    Iterable<Customer> customer = customerRepository.findAll(); 
    ObjectMapper mapper = new ObjectMapper(); 
    return (List<CustomerDTO>) mapper.convertValue(customer, CustomerDTO.class); 
} 

나는 메시지 아래에 무엇입니까 List 값을 변환 할 때

com.fasterxml.jackson.databind.JsonMappingException : COM의 인스턴스를 직렬화 할 수 없습니다 .finman.customer.CustomerDTO START_ARRAY에서

+0

을 일반적으로, 당신은 자신을 캐스팅 찾을 때, 당신은 아마 당신은 당신이하고 (또는 일을 할) 생각하는 일을하지 않습니다. –

+0

왜 그렇게 했습니까? 이것이 고객을 JSON으로 직렬화 한 다음 JSON을 CustomerDTO로 파싱한다는 것을 알고 있습니까? 두 클래스가 같은 구조를 가지고 있지 않고 리팩토링을 지원하지 않는다면 런타임시 매우 비효율적이며 모호합니다. 고객으로부터 CustomerDTO를 생성하는 생성자 또는 메서드를 생성하는 것이 어떻습니까? –

답변

0
mapper.convertValue(customer, CustomerDTO.class) 

이 시도 토큰 하나의 CustomerDTO을 작성하십시오. 목록은 아닙니다.

아마도이 도움이 될 것입니다

mapper.readValues(customer, CustomerDTO.class).readAll() 
+0

그 때 무엇을 사용할 수 있습니까? 그리고 내가 그 CustomerDTO를 사용하지 않는다면 객체 매퍼는 변환 할 객체를 어떻게 알 수 있을까요? –

+0

나는 나의 편집을 참조한다. –

+0

죄송합니다. 나는 같은 시도했지만 경고가 아래에있어 ObjectMapper 형식의 readValues ​​(JsonParser, ResolvedType) 메서드는 인수에 적용 할 수 없습니다 (Iterable , 클래스 ) –

관련 문제