我有一个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();
}
}
,而没有任何进一步的堆栈跟踪。
可能是什么原因?
答案 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就会出现异常。