持久化实体时的完整性约束违规

时间:2017-07-17 10:08:27

标签: java oracle jpa

我有一些类似于这个的JPA,但当我尝试坚持一个有proyects的员工时,我得到:

  • ORA-02291:违反完整性约束(EMPLOYEEPROYECTS_FK1) - 未找到父密钥。
  • ORA-00001:违反了唯一约束(PROYECTS_UK1)。

我做错了什么?

@Entity
@Table(name="EMPLOYEES")
public funal class Employee {
    @Id
    @SequenceGenerator(name="EMPLOYEES_ID_GENERATOR", sequenceName="EMPLOYEES_ID_SEQ")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator("EMPLOYEES_ID_GENERATOR")
    private Long id;

    private String field1;

    @Temporal(TemporalType.DATE)
    private Date field2;

    @OneToMany(mappedBy="employee", cascade=CascadeType.ALL)
    private Set<EmployeeProyect> employeeProyects;

    // bla bla
}

@Entity
@Table(name="PROYECTS")
public funal class Proyect {
    @Id
    @SequenceGenerator(name="PROYECTS_ID_GENERATOR", sequenceName="PROYECTS_ID_SEQ")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator("PROYECTS_ID_GENERATOR")
    private Long id;

    private String field1;

    @Temporal(TemporalType.DATE)
    private Date field2;

    @OneToMany(mappedBy="proyect")
    private Set<EmployeeProyect> employeeProyects;

    // bla bla
}

@Entity
@Table(name="EMPLOYEEPROYECTS")
public final class EmployeeProyect  {
    @EmbeddedId
    private EmployeeProyectPK id;

    @ManyToOne
    @MapsId("idEmployee")
    @JoinColumn(name="ID_EMPLOYEE", insertable=false, updatable=false)
    private Employee employee;

    @ManyToOne
    @MapsId("idProyect")
    @JoinColumn(name="ID_PROYECT", insertable=false, updatable=false)
    private Proyect proyect;

    private string commonField;

    // bla bla
}

@Embeddable
public final class EmployeeProyectPK {

    @Column(name="ID_EMPLOYEE")
    private long idEmployee;

    @Column(name="ID_PROYECT")
    private long idProyect;

    // bla bla
}

0 个答案:

没有答案