尝试通过REST Post方法插入学生对象时出现以下错误
2020-10-08 18:50:08.799错误21708---[nio-8080-exec-7]o. a. c. c.C.[.[.]Servlet.service()的servlet[调度Servlet]在上下文中的路径[]抛出异常[请求处理失败;嵌套异常是org.springframework.dao.数据完整性违反异常:不能执行语句;SQL[n/a];约束["学生(STUDENT_ID)[0, NULL, NULL]”;SQL语句:插入学生(class_id,student_name,student_id)值 (?, ?, ?)[23505-200]];嵌套异常是org.hibernate.exception.ConstraintViolation异常:无法执行语句]的根本原因
组织。h2。jdbc。JdbcSQLIntegrityConstraintViolationException:唯一索引或主键冲突:“PUBLIC.STUDENT(STUDENT_ID)[0,NULL,NULL]上的主键”;SQL语句:将值(?、、、?)插入学生(班级id、学生姓名、学生id)[23505-200]
pplication.properties:
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:mem:testdb
hibernate.check_nullability=false
spring.jpa.hibernate.ddl-auto=create
Student.class
@Entity(name = "STUDENT")
public class Student {
@Id
@Column(name = "Student_Id")
private int studentID;
@Column(name = "Student_Name")
private String studentName;
@ManyToOne(cascade = javax.persistence.CascadeType.ALL)
@JoinColumn(name = "class_id", nullable = true)
private Classs classs;
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Classs getClasss() {
return classs;
}
public void setClasss(Classs studentClass) {
this.classs = studentClass;
}
}
班级
@Entity(name = "CLASSS")
public class Classs {
@Id
@Column(name = "Classs_Id")
private int classsId;
@Column(name = "Classs_Name")
private String classsName;
@OneToMany(fetch = FetchType.LAZY)
private List<Student> students;
public int getClasssId() {
return classsId;
}
public void setClasssId(int classsId) {
this.classsId = classsId;
}
public String getClasssName() {
return classsName;
}
public void setClasssName(String classsName) {
this.classsName = classsName;
}
}
学生服务。班
@Service
public class StudentService {
@Autowired
private StudentRepostry studentRepository;
public List<Student> getAllStudents() {
return studentRepository.findAll();
}
public Optional<Student> findById(Integer id) {
return studentRepository.findById(id);
}
public Student insertStudent(Student student) {
return studentRepository.save(student);
}
public Student updatingStudent(Student student) {
return studentRepository.save(student);
}
public void deleteStudentById(int id) {
studentRepository.deleteById(id);
}
}
classs服务。班
@Service
public class ClasssService {
@Autowired
private ClasssRepository classsRepository;
public Classs insertClass(Classs classs) {
return classsRepository.save(classs);
}
}
大学管理者。班
@RestController
@RequestMapping("/university")
public class UniversityRegController {
@Autowired
private StudentService studentService;
@Autowired
private ClasssService classsService;
@GetMapping("/students")
public List<Student> getAllStudentsList() {
return studentService.getAllStudents();
}
@GetMapping("/student/{id}")
public Optional<Student> getStudentById(@PathVariable int id) {
return studentService.findById(id);
}
@PostMapping("/registerStudent")
public Student registerStudent(@RequestBody Student student) {
return studentService.insertStudent(student);
}
@PostMapping("/registerClass")
public Classs registerClass(@RequestBody Classs classs) {
return classsService.insertClass(classs);
}
@PutMapping("/updateStudent")
public Student updateStudent(@RequestBody Student student) {
return studentService.updatingStudent(student);
}
@DeleteMapping("/deleteStudent/{id}")
public void deleteStudentById(@PathVariable int id) {
studentService.deleteStudentById(id);
}
}
URI:http://localhost:8080/university/registerStudentREST POST方法:
{
"Student":
{ "Classs":
{
"classsId":108,
"classsName":"8th Class"
},
"studentID": 11,
"studentName": "Jasdfngid"
}
}
您试图创建两行,其中的STUDENT_ID是主键(这意味着两行上的STUDENT_ID不能相同,也不能为NULL)
尝试通过REST Post方法插入Student对象时得到以下错误 2020-10-08 18:50:08.799错误21708---[nio-8080-exec-7]O.A.C.C.C.[.[.[/].[dispatcherServlet]:servlet.Service()在路径[]上下文中的servlet[dispatcherServlet]引发异常[请求处理失败;嵌套异常是org.spri
每当我的应用程序启动时,我总是得到以下错误消息: 将data.sql更改为: 生成以下错误消息:
每当应用程序启动时,我总是收到以下错误消息: 将data.sql更改为: 产生以下错误消息:
我是hibernate新手,我遇到了以下问题。“唯一索引或主键冲突”。问题的出现是由于错误的映射,但我花了几个小时来找出为什么会发生这种情况。 我有一个超级类叫做数据结构 然后是关联两个元素的类关联。这里省略了类的某些部分,只是为了简化它。 这个类作为两个数据结构类型类之间的中间类。像这样。 TP-协会-TP TP等级: 或者激活类 总的来说,我增加了以下内容: 当我尝试添加相同的对象时,问题就出
java } cardto.java 唯一索引或主键冲突:由:org.h2.jdbc.jdbcsqlexception使用:唯一索引或主键冲突:“public.car(ID)上的主键”;SQL语句:插入到car(可转换,engine_type,IS_Brooking,IS_Function,license_plate,Manufactor,rating,seat_count,id)值(?,?,?,
我开始在我的spring managed java项目中使用flyway(我也在使用hibernate)。 我遵循了飞行路线的文档。我还配置了maven插件,一切正常。 尝试使用maven插件进行清理、初始化和迁移,一切正常。 相反,如果我尝试运行我的应用程序(其中有我的flyway bean): 我看到了: 创建数据库的模式 创建schema_version表 我的脚本创建整个数据库工作 不幸的