Передача массива на rest и его сохранение в БД

317
26 ноября 2016, 19:18

Делаю rest сервис. Задача передать Json массив и сохранить его в базе.

На данный момент так:

MessageController

//Add one message
    @RequestMapping(
            value = "/api/message",
            method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_JSON_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> addMessage(@RequestBody Message newMessage) {
        return new ResponseEntity<>(messageRepository.save(newMessage), HttpStatus.CREATED);
    }
    //Add array of messages
    @RequestMapping(
            value = "api/messages",
            method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_JSON_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<?> addMessages(@RequestBody List<Message> newMessages) {
        return new ResponseEntity<Object>(messageRepository.save(newMessages), HttpStatus.CREATED);
    }

Сохраняется и один элемент и Json массив. Далее хочу ввести слой сервиса.

public interface MessageService {
    Message save(Message message);
    Message saveArray(List<Message> messages);

@Service
public class MessageServiceImp implements MessageService{
    private MessageRepository messageRepository;
    @Override
    public Message save(Message message) {
        return messageRepository.save(message);
    }
    @Override
    public Message saveArray(List<Message> messages) {
        return messageRepository.save(messages); //а тут я уже запутался
    }

Почему напрямую в контроллере метод save перебирает массив, а тут получается вроде нет? Как это должно выглядеть?

Добавлено:

@Entity
@Table(name = "message")
public class Message {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "ID")
    private long id;
    @Column(name = "MESSAGE")
    private String message;
    @Column(name = "AUTHOR")
    private String author;
    @Column(name = "CREATED")
    @Temporal(TemporalType.DATE)
    private Date created = new Date();
    public Message() {
    }
    public Message(Long id, String message, String author, Date created) {
        this.id = id;
        this.message = message;
        this.author = author;
        this.created = created;
    }
+ getters / setters
Answer 1

Правильный ответ.

MessageServiceImp.java

@Override
public List<Message> saveArray(List<Message> messages) {
    return messageRepository.save(messages);
}

MessageController.java

//Add array of messages
@RequestMapping(
        value = "api/messages",
        method = RequestMethod.POST,
        consumes = MediaType.APPLICATION_JSON_VALUE,
        produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> addMessages(@RequestBody List<Message> messages) {
    return new ResponseEntity<Object>(messageService.saveArray(messages), HttpStatus.CREATED);
}
READ ALSO
Проблема с NetBeans. В коде вместо &#39;\&#39; показывает &#39;y&#39;

Проблема с NetBeans. В коде вместо '\' показывает 'y'

1У меня в коде вместо "\" показывает "y"

249
Как распаковать Ajax-запрос в Json , а с Jsona в Java?

Как распаковать Ajax-запрос в Json , а с Jsona в Java?

Создал вот такой Ajax запросЗапрос отправляется на Сервлет

296
Listview&#39;ы разметка - производительность android

Listview'ы разметка - производительность android

Имеется 10 listviewДля каждого есть свой кастомный адаптер

343
onActivityResult не запускается

onActivityResult не запускается

Проблема заключается в том, что мне необходимо вызвать метод onActivityResult для MainActivityВ этой активности, я перехожу сначала в активность "Поиск",...

279