2016-11-01 6 views
1

Я стараюсь сохранить массив объекта с помощью метода POST, проходящего массив для отдыха ресурса, но у меня есть ошибка:Как сохранить многие объекты в том же запросе с использованием Spring загрузка данных Rest

org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Can not deserialize instance of br.com.servtech.almox.model.Item out of START_ARRAY token 
at [Source: [email protected]; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of br.com.servtech.almox.model.Item out of START_ARRAY token 
at [Source: [email protected]; line: 1, column: 1] 
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:228) ~[spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE] 
    at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readInternal(AbstractJackson2HttpMessageConverter.java:205) ~[spring-web-4.3.3.RELEASE.jar:4.3.3.RELEASE] 

Когда я отправляю один объект данных, данные сохраняются очень хорошо!


Мои Entity:

@Entity 
public class Item implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @Basic 
    private String name; 

    @Basic 
    private Integer quantity; 

    @Basic 
    private Double cash; 

    @ManyToOne 
    private Requirement requirement; 

    //getters and setters 
} 

Мой Repository:

@RepositoryRestResource 
@CrossOrigin 
public interface ItemDAO extends CrudRepository<Item, Long> { 

} 

Данные:

[{ 
    "name": "A1", 
    "quantity": 3, 
    "cash": 5.80 
}, { 
    "name": "B2", 
    "quantity": 3, 
    "cash": 5.80 
}] 

Я попытался с помощью Content-Type приложения/JSON и использование с текстом/uri-списком. Что не так? Я еще несколько настроек?

+0

Пожалуйста, также разместить свой метод контроллера и связанного с ним значение объекта, который приходит с вызовом запроса .. –

+0

Он использует Spring Data Rest, он уже это сделал. – Adam

ответ

1

Неправильно то, что пытается прочитать ваш запрос тела как Item, когда он на самом деле несколько Items.

Я считаю, что у вас есть два варианта. То, что я обычно делал бы в этой ситуации, было бы создать другой ресурс, такой как ItemCollection, чтобы обернуть несколько Items. Тогда у вас может быть стандартная функциональность REST, которая займет ItemCollection, что по существу будет обрабатывать несколько Items.

Ваш второй вариант был бы вручную переопределить метод для обработки нескольких Itmes: http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-sdr.overriding-sdr-response-handlers

+0

Большое вам спасибо! Я закончил ваше предложение документации. Я оставляю здесь ссылку тестового репозитория, который я сделал => https://github.com/rafaeldev/spring-boot-tests –

 Смежные вопросы

  • Нет связанных вопросов^_^