Mongo Repository Spring数据在保存的对象列表中提供了空指针

时间:2018-11-19 08:01:04

标签: java mongodb spring-boot spring-data-mongodb

我有一个Spring-Boot的Mongo应用程序,我试图在其中保留对象列表。

我有一个解析一些json数据并创建对象列表的方法。然后,我调用save的{​​{1}}方法来将它们全部保存。

存储库代码如下:

MongoRepository

public interface TicketRepository extends MongoRepository<Ticket, String> { } 对象POJO为:

Ticket

现在,某些对象的某些字段也将为空,因为我没有为它们设置任何值。

最后,这就是我保存它们的方式:

@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(); } } ,而没有任何进一步的堆栈跟踪。

可能是什么原因?

2 个答案:

答案 0 :(得分:1)

我认为自动装配中的问题不在@Repository中,甚至不在EnableJpaRepositories中。根据此答案

Spring data repository works without annotations 您无需提及批注,因为它是起点的自动配置,像这样自动布线

@Autowired
TicketRepository ticketRepository;

//getter and setter 

答案 1 :(得分:0)

您是否尝试过在调试中运行应用程序,并在调用f=[[1,2,3],[1,2,3],[1,2,3],[1,2,3]] 时中断了?

票证ticketRepository.save(tickets)可能为空。您尚未显示List方法的作用,但它可能返回的是空对象,而不是实际的getTicketObjectList。因此NPE可能是因为您试图保存null。

或者,List可能为null,并且没有正确自动接线,但是如果是这样的话,我认为从应用程序启动时起,Spring就会出现异常。