모든 테이블이 Java JPA/Hibernate 코드에 의해 생성 된 데이터베이스가 있습니다. 나는상위 행을 삭제하거나 업데이트 할 수 없음 - JPA (최대 절전 모드)
UPDATE Department SET id=100000 WHERE id=0;
불행하게도 이것은 오류가 발생,이 유사한 방식으로 내 데이터베이스에 여러 테이블을 갱신 할 필요가
ERROR 1451 (23000) : 삭제하거나 부모 행을 업데이트 할 수 없습니다하십시오 외래 키 제약 조건이 실패 (departmentuserlink, CONSTRAINT FK96AF44EAB09C41C5 FOREIGN KEY (department_id) 참조 부서 (ID)) 다음은
는 자바 엔티티 :
@Entity
@Table(name="Department")
public class Department extends AbstractEntity implements IAbstractEntity {
@OneToMany(cascade=CascadeType.ALL, mappedBy="department", fetch=FetchType.EAGER)
private Set<DepartmentJobLink> departmentJobs = new HashSet<DepartmentJobLink>(0);
//Setters & getters and all that
}
@Entity
@Table(name="edrDepartmentJobLink", uniqueConstraints={@UniqueConstraint(columnNames={"department_id", "job_id"})})
public class DepartmentJobLink extends AbstractEntity implements IAbstractEntity {
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="department_id", nullable=false)
private Department department;
//Setters & getters and all that
}
둘 다 수퍼 클래스에 ID가 있습니다. 지금까지는 다른 모든 것들이 훌륭하게 작동하고 부서의 기본 키를 업데이트하는 데 어려움을 겪고있는 것처럼 보입니다. 나는 어떤 조언을 주셔서 감사하겠습니다. 감사.
그래서 당신이 말하는 것과 PhpMyAdmin의 테이블을 조금 보았을 때, 열 주석의 cascade = CascadeType.ALL은 실제 테이블에 계단식 업데이트를 설정하지 않습니다. JPA를 통해 테이블 자체에 계단식 업데이트를 추가하는 방법이 있는지 알고 계시나요? 필요할 때 직접 추가하여 제공하는 것이 가장 좋을까요? 입력 해 주셔서 감사합니다. 나는 지금 무슨 일이 일어나고 있는지 더 잘 이해하고 있다고 믿는다. – Donny
JPA가 테이블을 생성하지 않습니다. JPA 주석/최대 절전 모드 매핑에서 테이블 정의 * 기반 *을 자동으로 생성 할 수있는 도구가있을 수 있지만 JPA를 사용하면 테이블 생성이 처리된다는 의미가 아닙니다. JPA의 관점에서 "계단식"이란 의미가 다른 것을 의미합니다. –