班级和学生是一对多的关系,通过JPA注解实现了它们的一对多关系。tab_student表有三个字段,student_id(主键),student_name,banji_id(外键),而tab_banji表中有banji_id(主键)和banji_name两个字段,实现插入学生到某个班去,同时保存班级和学生。
上面代码略去了 setter和getter 方法,equals 和 hashcode 方法的实现,你可以使用IDE 实现。
使用时,一个事务中可以这样做
也可以单独添加一个学生到班级中。
也可以单独更新Student
- public class StudClass implements Serializable {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
- private String name;
- @OneToMany(cascade = CascadeType.ALL, mappedBy = "cls")
- private List<Student> students=new ArrayList<Student>();
- public StudClass(){}
- public StudClass(String name){
- this.name=name;
- }
- // seter and getters
- // equlas and hashcode 方法实现
- public void addStudent(Student s){
- this.students.add(s);
- s.setCls(this);
- }
- }
- public class Student implements Serializable {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
- private String name;
- @ManyToOne
- private StudClass cls;
- public Student(){}
- public Student(String name){
- this.name=name;
- }
- // seter and getters
- // equlas and hashcode 方法实现
- }
上面代码略去了 setter和getter 方法,equals 和 hashcode 方法的实现,你可以使用IDE 实现。
使用时,一个事务中可以这样做
- StudClass c=new StudClass("一班");
- Student s1=new Student("同学1");
- Student s2=new Student("同学2");
- c.addStudent(s1);
- c.addStudent(s2);
- em.persist(c);
也可以单独添加一个学生到班级中。
也可以单独更新Student
- StudClass c=em.getReference(StudClass.class, id);
- Student s1=new Student("同学1");
- s1.setCls(c);
- em.persist(s1;