Mongo Repository spring предоставляет данные с нулевым указателем при сохранении списка объектов - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть Spring-Boot с приложением Mongo, где я пытаюсь сохранить список объектов.

У меня есть метод, который анализирует некоторые данные JSON и создает список объектов. Затем я вызываю save метод MongoRepository, чтобы сохранить все сразу.

Код репозитория выглядит так:

public interface TicketRepository extends MongoRepository<Ticket, String> {

}

А Ticket Объект POJO:

@Document
public class Ticket {

    @Id
    private String id;
    private String topic;
    private String type;
    private long brand;
    private long group;
    private String priority;
    private String status;
    private String created_date;
    private String created_time;
    private String channel;

    public Ticket() {
    }

    //.........getters and setters....

}

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

И наконец, вот как я их спасаю:

@RestController
public class TicketController {

    @Autowired
    TicketRepository ticketRepository;

    @GetMapping("/tickets")
    public void saveTicketData() {
        List<Ticket> tickets = null;
        try {
            tickets = getTicketObjectList(ticketJson);
            ticketRepository.save(tickets);
        } catch (DuplicateKeyException e) {
            System.out.println("duplicate found!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Это вызывает NullPointerExcetion при вызове метода save без дальнейшей трассировки стека.

В чем может быть причина?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вы пытались запустить приложение в режиме отладки и прерывания в точке, где вы вызываете ticketRepository.save(tickets)?

Возможно, что билеты List равны нулю. Вы не показали, что делает метод getTicketObjectList, но он может возвращать нулевой объект, а не фактический List. Поэтому NPE может быть потому, что вы пытаетесь сохранить ноль.

В качестве альтернативы может быть, что ticketRepository является нулевым и не был правильно подключен автоматически, но я думаю, что у вас было бы исключение из пружины при запуске приложения, если бы это было так.

0 голосов
/ 19 ноября 2018

проблема, я думаю, в автопроводке не в @Repository или даже в EnableJpaRepositories.в соответствии с этим ответом

Хранилище данных Spring работает без аннотаций вам не нужно упоминать аннотации, потому что это автоконфигурация в начальной точке, автоматическое подключение, как это

@Autowired
TicketRepository ticketRepository;

//getter and setter 
...