양방향 일대다 캐스케이드 삭제 문제 ---delete 캐스케이드 작업은 지속적 객체의 캐스케이드 작업만 지원
한쪽 끝:QuestionType 클래스
package com.exam.entity;
import java.util.Set;
public class QuestionType {
private String typeName;
private char typeUniqueness;
private Set quesion;
public String getTypeName() {
return typeName;
}
public void setTypeName(String typeName) {
this.typeName = typeName;
}
public char getTypeUniqueness() {
return typeUniqueness;
}
public void setTypeUniqueness(char typeUniqueness) {
this.typeUniqueness = typeUniqueness;
}
public Set getQuesion() {
return quesion;
}
public void setQuesion(Set quesion) {
this.quesion = quesion;
}
}
구성 파일:
<hibernate-mapping package="com.exam.entity">
<class name="QuestionType" table="exam_question_type">
<id name="typeName" column="type_name"></id>
<property name="typeUniqueness" column="type_uniqueness"/>
<set name="quesion" inverse="true" cascade="delete">
<key column="question_type_name"/>
<one-to-many class="Question"/>
</set>
</class>
</hibernate-mapping>
다중 끝: Question 클래스
package com.exam.entity;
import java.util.Date;
public class Question {
private int questionNo;
private QuestionType questionType;
private String questionsTitle;
public int getQuestionNo() {
return questionNo;
}
public void setQuestionNo(int questionNo) {
this.questionNo = questionNo;
}
public QuestionType getQuestionType() {
return questionType;
}
public void setQuestionType(QuestionType questionType) {
this.questionType = questionType;
}
public String getQuestionsTitle() {
return questionsTitle;
}
public void setQuestionsTitle(String questionsTitle) {
this.questionsTitle = questionsTitle;
}
}
구성 파일:
<hibernate-mapping package="com.exam.entity">
<class name="Question" table="exam_question">
<id name="questionNo" column="question_no" >
<generator class="increment" />
</id>
<many-to-one name="questionType" column="question_type_name"/>
<property name="questionsTitle" column="questions_title" length="200" />
</class>
</hibernate-mapping>
먼저 일반적인 등록 정보에 대해 설명합니다.
name: 비치는 지구화 클래스의 속성 이름 설정
column: 지구화 클래스의 속성에 대응하는 테이블의 키를 설정합니다
class: 지구화 클래스의 속성 형식을 설정합니다
cascade: 종속 연결 여부 설정
로드 지연 여부를 설정합니다.
name: 비치는 지구화 클래스의 속성 이름 설정
cascade: 캐스케이드 여부 설정
inverse: 역방향 제어를 설정합니다.true의 한쪽은 외부 키를 유지하지 않습니다.
one-to-many: 관련된 지구화 클래스 설정
다중 연관 매핑 쌍을 캐스케이드 방식으로 제거하는 경우 위의 예제에 따라 구성할 수 있습니다.
먼저 한 쪽 끝을 볼 수 있습니다.
<set name="quesion" inverse="true" cascade="delete">
<key column="question_type_name"/>
<one-to-many class="Question"/>
</set>
여기에 inverse를 설정하면 한 쪽이 외부 키를 유지하지 않음을 표시하고,cascade="delete"를 설정하면 한 쪽을 삭제할 때 연관된 모든 대상도 함께 삭제합니다
한 쪽 더 보기:
<many-to-one name="questionType" column="question_type_name"/>
여기의column은 외부 키의 이름을 표시하고, 한 쪽에 설정된 키 탭의column과 일치해야 하며, 같은 키 값을 유지해야 합니다.
다음 코드에 따라 삭제 작업을 수행할 수 있습니다.
session.beginTransaction();
QuestionType questionType = (QuestionType) session.load(QuestionType.class, " ");
session.delete(questionType);
session.getTransaction().commit();
여기에서load를 사용하여 검색한 대상은 영구상태(Persistent)이고,Persistent상태의 대상만session을 사용할 수 있습니다.delete () 작업은 단계별로 삭제되며 new에서 만든 대상은 Transient 상태이며session을 할 수 없습니다.delete() 작업
즉 프로필을 설정한 카카오는 테이블 구조의 외부 키에 대해 카카오를 하지 않는다는 것이다.bernate는 단지 대상에 대한 등급연결이기 때문에 지구화 상태에서의 대상이 있어야만 등급연결 작업을 할 수 있습니다!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.