[JPA 레벨 저장/레벨 삭제] @ OneToMany (쌍방 향) 한 쌍 이 많 습 니 다. 전 세계 가 깨끗 해 지고 레벨 삭제 가 불가능 합 니 다. 외부 키 가 연결 되 어 있 기 때 문 입 니 다.
6093 단어 jpa
http://blog.sina.com.cn/s/blog_6826662b01016ylz.html
【JPA】 @OneToOne 【JPA】@OneToOne 。 JPA 。 , , 。 :【JPA】 @Cascade
, 。School( ) Studnet( ) 。 , 。 , 。 , 。 , , 。 , , 。
--------< >----------------------------------------------------------------------------------------------------------
// Model , 。 , ," " , 。
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
// "school_fk"
@ManyToOne
@JoinColumn(name="school_fk")
private School school;
// get / set
}
@Entity
@Table(name = "school")
public class School {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy="shcool")
// : / 。 ,
@Column(cascade={CascadeType.PERSIST})
private List students;
//
public void addStudent(Strudent stu){
if(stu != null){
students.add(stu);
}
}
// get / set
}
-----------------------------------------------------< >--------------------------------------------------------------
public class Test(){
public void testCreate(){
School school = new School();
school.setName(" ");
Student st1 = new Student();
st1.setName(" ");
st1.setSchool(school);
studnetDAO.save(st1);
Student st2 = new Student();
st2.setName(" ");
st2.setSchool(school);
studnetDAO.save(st2);
//
school.addStudent(st1);
school.addStudent(st2);
schoolDAO.save(school);
// 。 , 。
// JPA , , 。 , , 。
}
// ,
public void testPersistCreateSchool(){
// : (School)Model :cascade={CascadeType.PERSIST}
School school = new School();
school.setName(" ");
Student st1 = new Student();
st1.setName(" ");
st1.setSchool(school);
// st1
//studnetDAO.save(st1);
Student st2 = new Student();
st2.setName(" ");
st2.setSchool(school);
// st2
//studnetDAO.save(st2);
//
school.addStudent(st1);
school.addStudent(st2);
schoolDAO.save(school);// , [st1、st2] 。( )
}
//
public void testDeleteSchool(){
// , 。
testCreate();
schoolDAO.delete(school);//
//avax.persistence.RollbackException: Error while commiting the transaction Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint...
// , , 。 。 , , 。
List<Strudnet> students = school.getStudentList();
for(int i=0;i<students.size();i++){
Student stu = students.get(i);
stu.setSchool(null);//
}
schoolDAO.delete(school);// , 。 。 , 。
// , 。JPA ? ? ?
// , , ?!
// , 。 , 。 , , 。 , JPA 。
// Model , () :@Column(cascade={CascadeType.PERSIST})
// :@Column(cascade={CascadeType.PERSIST,CascadeType.REMOVE}) 。 , 。
schoolDAO.delete(school);// , 。 , , 。
Stduent stu = studentDAO.findByName( ");
// : null , 。 ...
// , JPA 。 。 。 , Model , , 。
// , , 。 。 , 。 , , 。
}
//
public void testDeleteStudent(){
//
testCreate();
studentDAO.delete(st1);// ,st1( , “ ” ) 。 , 。 ,st1 。 JPA 。
// , : 。st1 。 。
// ,Stuent Model 。@JoinColumn(name="school_fk",cascade={CascadeType.REMOVE}) ,School Model 。
// , , 。
studentDAO.delete(st1);
// , 。 。 , 。 ?
// JPA :
1: st1
2:school st1
3:st2 school
// , , 。 , , 。 。
// , 。 , 。 Model , 。 。 , , 。 , CascadeType.ALL , 。
}
// main
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
eclipse로 테이블에서 JPA 엔티티 만들기eclipse에서 테이블에서 JPA 엔티티를 만드는 방법을 참고하십시오. 1. 엔티티를 만들려는 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 새로 만들기 > 테이블에서 JPA 엔티티를 선택합니다. 2. "연결 추가"를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.