[英]Spring Boot Get a 500 Internal Server Error with Post method
[英]500 Internal Server Error in spring boot post API
我正在尝试在 Spring Boot 应用程序中创建一个发布 API,但它不起作用,我在代码中找不到问题
这是服务:
@Transactional
public Invoice saveInvoice(Invoice invoice) {
Invoice newInvoice = invoiceRepository.save(invoice);
return newInvoice;
}
这是控制器:
@PostMapping("/save")
public ResponseEntity<Invoice> addInvoice(@RequestBody InvoiceDTO invoice) {
try {
Invoice newInvoice = invoiceService
.saveInvoice(new Invoice(invoice.getSerialNumber(), invoice.getStatus(), invoice.getCreatedDate()));
return new ResponseEntity<>(newInvoice, HttpStatus.CREATED);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这是模型:
@Entity
@Table(name = "invoice")
public class Invoice {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private int id;
@Column(name = "serial_number")
private long serialNumber;
@Column(name = "status")
private String status;
@Column(name = "created_date")
private Timestamp createdDate;
@Column(name = "is_deleted")
private boolean isDeleted;
@ManyToOne
@JoinColumn(name = "customer_id")
private Customer customer;
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
@OneToMany
private Set<InvoiceHistory> invoiceHistories;
@ManyToMany
private Set<Item> items;
public Invoice(long serialNumber, String status, Timestamp createdDate) {
this.serialNumber = serialNumber;
this.status = status;
this.createdDate = createdDate;
this.isDeleted = false;
}
}
但是当我在邮递员中运行时,它返回 500 Internal Server Error
更新错误信息:
, message=无法调用“com.example.invoices.repository.IInvoiceRepository.save(Object)”,因为“this.invoiceRepository”为空,path=/invoice/save}]
问题出在哪里?
对于您的服务类,您如何声明和创建invoiceRepository
? 如果是这样:
private InvoiceRepository invoiceRepository;
然后你需要添加一个@Autowired
:
@Autowired
private InvoiceRepository invoiceRepository;
如果您确实拥有它@Autowired
,请确保您的服务类使用@Service
注释:
@Service
public class InvoiceService {...}
如果有,请确保您没有在控制器中使用"new"
创建InvoiceService
。 代替:
private InvoiceService invoiceService = new InvoiceService();
或在构造函数中"new"ing
它,使用@Autowire
@Autowire
private InvoiceService invoiceService;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.