繁体   English   中英

Spring Boot Post API 中的 500 内部服务器错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM