繁体   English   中英

org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException:唯一索引或主键违规

[英]org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation

我收到此错误:

org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: 唯一索引或主键违规:“PRIMARY KEY ON PUBLIC.COURSE(ID) ( /* key:1001 */ 1001, 'WebDev')”; SQL 语句:插入课程 (name, id) 值 (?, ?) [23505-214]

当我通过邮递员将现有课程添加到新学生对象时。

我的两个实体的代码都是

package spring.mvc.model;


import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Student {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    
    private String name;

    @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    private Set<Course> courses;
}
package spring.mvc.model;

import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;

import javax.persistence.Id;
import javax.persistence.ManyToMany;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Course {
    
    @Id
    private Integer id;
    private String name;
    
    @ManyToMany(mappedBy = "courses")
    private Set<Student> students;

}

请告诉我我做错了什么???

您将 Course 类的 id 字段作为表的主键,因此您无法在表中插入重复值,您尝试插入 id 为 1001 且表中已存在的行,因此会出现此错误。 您也可以在 Course 类的 id 列上添加 @GeneratedValue(strategy = GenerationType.AUTO) 来为每条新记录创建一个新 id。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM