フォーラム メンバー Hibernate JPA フレームワークを使用したデータの挿入に関して 1 つの問題があります。
タスクとリソースの間に 1 対多の関係があります。
私のタスクモデルは以下のコードのようなものです。
@Entity
@Table(name = "task")
public class Task {
private Integer id;
private Set<Employee> employee = new HashSet<Employee>(0);
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToMany(cascade = CascadeType.ALL, fetch =FetchType.EAGER)
@JoinTable(name = "task_employee", joinColumns = { @JoinColumn(name = "taskid") }, inverseJoinColumns = { @JoinColumn(name = "employeeid") })
public Set<Employee> getEmployee() {
return employee;
}
public void setEmployee(Set<Employee> employee) {
this.employee = employee;
}
}
私の従業員モデルは
@Entity
@Table(name = "employee")
public class Employee {
private Integer id;
private String firstname;
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "firstname")
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
}
次の場合、レコードを正常に挿入できます
1. タスク ID は 1、employeeid は 1、
2. タスク ID は 1、employeeid は 2、
3. タスク ID は 2、employeeid は 3、
しかし、以下の挿入のように従業員IDが重複しているとエラーが発生します。
4. タスク ID は 1、employeeid は 1
それは私にエラーを与える
79512 [http-8080-4] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1062, SQLState: 23000
79517 [http-8080-4] ERROR org.hibernate.util.JDBCExceptionReporter - Duplicate entry '2' for key 'employeeid'
79517 [http-8080-4] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
コードの何が問題になっていますか? 私を助けてください!!!