Spring引导控制器中的Post请求抛出;java.sql.SQLIntegrityConstraintViolationException:Column';columnname';不能为空";
我开始学习SpringBoot,目前正在尝试编写我的第一个API。创建新课程的控制器端点工作正常(通过邮递员发送JSON对象)。但是,我创建新申请者的端点返回Spring引导控制器中的Post请求抛出;java.sql.SQLIntegrityConstraintViolationException:Column';columnname';不能为空";,java,mysql,spring,spring-boot,Java,Mysql,Spring,Spring Boot,我开始学习SpringBoot,目前正在尝试编写我的第一个API。创建新课程的控制器端点工作正常(通过邮递员发送JSON对象)。但是,我创建新申请者的端点返回 { "timestamp": "2020-11-14T15:21:47.189+00:00", "status": 500, "error": "Internal Server Error", "m
{
"timestamp": "2020-11-14T15:21:47.189+00:00",
"status": 500,
"error": "Internal Server Error",
"message": "",
"path": "/demo/addapplicant"
}
邮递员和
java.sql.SQLIntegrityConstraintViolationException:列“性别”
不能为空
在终端窗口中。
当我将MySQL数据库更改为允许为null表示性别时,它只会为不同的属性提供相同的异常。我假设JSON没有正确地转换为Java对象。但由于它对课程有效,我不确定是什么导致了这个问题
申请人类别:
package com.example.demoSql;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.util.Date;
@Entity
public class Applicant {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String firstname;
private String lastname;
private String gender; //only m, w, d allowed
private Date birthdate;
private String city;
private Integer zip_code;
private String street;
private String housenumber;
private Float highschool_grade;
private String highschool_certificate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String gender() {
return gender;
}
public void gender(String gender) {
this.gender = gender;
}
public Date getBirthdate() {
return birthdate;
}
public void setBirthdate(Date birthdate) {
this.birthdate = birthdate;
}
public String city() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Integer getZipCode() {
return zip_code;
}
public void setZipCode(Integer zip_code) {
this.zip_code = zip_code;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getHousenumber() {
return housenumber;
}
public void setHousenumber(String housenumber) {
this.housenumber = housenumber;
}
public Float getHighschoolGrade() {
return highschool_grade;
}
public void setHighschoolGrade(Float highschool_grade) {
this.highschool_grade = highschool_grade;
}
public String getHighschoolCertificate() {
return highschool_certificate;
}
public void setHighschoolCertificate(String highschool_certificate) {
this.highschool_certificate = highschool_certificate;
}
}
控制员:
package com.example.demoSql;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(path="/demo")
public class MainController {
@Autowired
private CourseRepository courseRepository;
@Autowired
private ApplicantRepository applicantRepository;
@PostMapping(path="/addcourse")
public @ResponseBody String addNewCourse (@RequestBody Course course) {
courseRepository.save(course);
return "Saved";
}
@GetMapping(path="/allcourses")
public @ResponseBody Iterable<Course> getAllUsers() {
// This returns a JSON or XML with the courses
return courseRepository.findAll();
}
@PostMapping(path="/addapplicant")
public @ResponseBody String addNewApplicant (@RequestBody Applicant applicant) {
applicantRepository.save(applicant);
return "Saved";
}
}
从json映射到java Obejct(申请人)后,由于“申请人”中没有性别getter/setter,因此将性别设置为null: 您需要使用:
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
插入:
public String gender() {
return gender;
}
public void gender(String gender) {
this.gender = gender;
}
从json映射到java Obejct(申请人)后,由于“申请人”中没有性别getter/setter,因此将性别设置为null: 您需要使用:
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
插入:
public String gender() {
return gender;
}
public void gender(String gender) {
this.gender = gender;
}