Section.class에서 계단식 저장을 수행 할 수 있습니까? Section 개체를 만들고 id가없는 새 질문을 추가합니다.@IdClass 주석이있는 클래스의 삽입 가능한 객체
org.postgresql.util.PSQLException: ERROR: insert or update on table "question_to_section" violates foreign key constraint "fk_2br9f09ok965403a9rv5y2n10" Details: Key (question_id)=(0) is not present in table "question".
가 나는 또한 @Embedded 주석을 사용하려고했으나 실패 : 나는 그것을 저장하려고하면 나는 오류가 발생합니다.
제 클래스 :
@Table(name = "section")
@Entity(name = "section")
public class Section implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
@JsonProperty
long id;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "section")
Set<QuestionToSection> questions = new HashSet<QuestionToSection>(0);
...
}
질문 섹션 클래스에
@Entity(name = "question_to_section")
@Table(name = "question_to_section")
@IdClass(QuestionSectionId.class)
public class QuestionToSection implements Serializable {
@Id
long sectionId;
@Id
long questionId;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "sectionId", nullable = false, updatable = false, insertable = false, referencedColumnName = "id")
Section section;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "questionId", nullable = false, updatable = false, insertable = false, referencedColumnName = "id")
Question question;
...
}
QuestionSectionId는
public class QuestionSectionId implements Serializable {
long questionId;
long sectionId;
}
여기에 진정한 관계가 '질문'과 '섹션'사이의 다 대다 (many-to-many) 것 같습니다. 'QuestionToSection' 엔티티를 끼워 넣는 시점은 무었입니까? –
당신의 문제가 updatable = false, insertable = false와 관계가 있습니다. MM을 캐스케이드 삽입을 허용하지 않기 위해서입니다. – cralfaro