尝试触发 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”的形式出现
- 保存时执行。
请帮助我哪里出错了。
