当前位置: 首页 > 知识库问答 >
问题:

唯一索引或主键冲突:“PUBLIC.STUDENT(STUDENT_ID)[0,NULL,NULL]上的主键”;SQL语句:

马阳曦
2023-03-14

尝试通过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"
            }
}

共有1个答案

乐正嘉瑞
2023-03-14

您试图创建两行,其中的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表 我的脚本创建整个数据库工作 不幸的