0

尝试触发 API 调用。硬件文件

     package com.hardware.procurement.hardware;
    
    import com.hardware.procurement.hardwareRequest.HardwaresRequest;
    import org.springframework.data.annotation.Id;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name = "hardwaresList")
    public class HardwaresList {
    
    
        @javax.persistence.Id
        @Column(name = "hardwareid")
        private long hardwareid;
    
        @Column(name = "hardwarename")
        private String hardwarename;
    
        @ManyToOne(fetch = FetchType.LAZY, optional = false)
        @JoinColumn(name = "requestid")
        private HardwaresRequest hardwarerequest;
    
        public HardwaresList() {
    
        }
    
        public HardwaresList(long hardwareid, String hardwarename, HardwaresRequest hardwaresRequest){
            this.hardwareid = hardwareid;
            this.hardwarename = hardwarename;
            this.hardwarerequest = hardwaresRequest;
        }
    
        public HardwaresRequest getHardwarerequest() {
            return hardwarerequest;
        }
    
        public void setHardwarerequest(HardwaresRequest hardwarerequest) {
            this.hardwarerequest = hardwarerequest;
        }
        public String getHardwarename() {
            return hardwarename;
        }
    
        public void setHardwarename(String hardwarename) {
            this.hardwarename = hardwarename;
        }
    
        public long getHardwareid() {
            return hardwareid;
    
        }
    
        public void setHardwareid(long hardwareid) {
            this.hardwareid = hardwareid;
        }
    
    }

硬件请求文件

    package com.hardware.procurement.hardware;

import com.hardware.procurement.hardwareRequest.HardwaresRequest;
import org.springframework.data.annotation.Id;

import javax.persistence.*;

@Entity
@Table(name = "hardwaresList")
public class HardwaresList {


    @javax.persistence.Id
    @Column(name = "hardwareid")
    private long hardwareid;

    @Column(name = "hardwarename")
    private String hardwarename;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "requestid")
    private HardwaresRequest hardwarerequest;

    public HardwaresList() {

    }

    public HardwaresList(long hardwareid, String hardwarename, HardwaresRequest hardwaresRequest){
        this.hardwareid = hardwareid;
        this.hardwarename = hardwarename;
        this.hardwarerequest = hardwaresRequest;
    }

    public HardwaresRequest getHardwarerequest() {
        return hardwarerequest;
    }

    public void setHardwarerequest(HardwaresRequest hardwarerequest) {
        this.hardwarerequest = hardwarerequest;
    }
    public String getHardwarename() {
        return hardwarename;
    }

    public void setHardwarename(String hardwarename) {
        this.hardwarename = hardwarename;
    }

    public long getHardwareid() {
        return hardwareid;

    }

    public void setHardwareid(long hardwareid) {
        this.hardwareid = hardwareid;
    }

}

控制器文件

        @RestController
@RequestMapping("/procurementAPI")
public class HardwareRequestController {

    @Autowired
    private HardwareRequestRepo hardwareRequestRepo;

    @PostMapping("/engineering/createRequest")
    public ResponseEntity<HardwaresRequest> createRequests(@RequestBody HardwaresRequest hardwaresRequest){
        try{
            HardwaresRequest hardwaresRequest1 = hardwareRequestRepo
                    .save(new HardwaresRequest(hardwaresRequest.getRequestid(),hardwaresRequest.getHardwaresList(),false,false));
            return new ResponseEntity<>(hardwaresRequest1, HttpStatus.CREATED);
        } catch (Exception e){
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

应用程序属性文件

    spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true

这是我试图触发查询的方式。 在此处输入图像描述

以及我在保存时遇到的异常:

org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value : com.hardware.procurement.hardware.HardwaresList.hardwarerequest; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value : com.hardware.procurement.hardware.HardwaresList.hardwarerequest

有两个问题: 1.requestId 总是以“0”的形式出现

  1. 保存时执行。

请帮助我哪里出错了。

4

0 回答 0