【问题标题】:jpa one-to-many data insertion error in javajava中的jpa一对多数据插入错误
【发布时间】:2012-05-10 02:10:11
【问题描述】:

论坛成员 我在使用 Hibernate JPA 框架插入数据时遇到了一个问题。

我在任务和资源之间建立了一对多的关系。

我的任务模型如下所示。

@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;
    }


}

我的 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. Task id 为 1,employeeid 为 1,

2。 Task id 为 1,employeeid 为 2,

3. Task id 为 2,employeeid 为 3,

但是当员工 id 像下面插入一样重复时会发生错误。

4. Task 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

我的代码有什么问题?请帮帮我!!!

【问题讨论】:

  • 您的第 4 条记录是 taskId 为 1,emp Id 为 1,与第 1 条记录相同。能贴出数据插入代码吗?
  • 以及异常的完整堆栈跟踪。

标签: java spring hibernate jpa-2.0


【解决方案1】:

您有一个 OneToMany 关系。这意味着一个任务可以有多个员工,但一个员工只能有一个任务!

员工ID重复时发生错误

但是您违反(或试图违反)该约束的第二部分

所以你应该使用多对多关系。

【讨论】:

    猜你喜欢
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多