
[英]H2 Database with Hibernate error Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: Unique index or primary key
[英]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.