发布时间: 2012-07-08 17:43:44 作者: rapoo
Hibernate入门BLOG[十、Hibernate对象关系多对多映射]多学生------多教师1、Java类文件:【省略set和get方法】Student.javapublic class Student {private int id;private String name;private Set<Teacher> teas;}Teacher.javapublic class Teacher {private int id;private String name;private Set<Student> stus;}2、Xml映射文件:Student.hbm.xml:<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.hibernate.model"><class name="Student" table="student"><id name="id"><generator class="native" /></id><property name="name" column="name"/><!-- 对应的table是teacher_student --><set name="teas" table="teacher_student"><!-- 首先找到student_id --><key column="student_id"></key><!-- 然后找到teacher_id找到teacher --><many-to-many class="Teacher" column="teacher_id"></many-to-many></set></class></hibernate-mapping>Teacher.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.hibernate.model"><class name="Teacher" table="teacher"><id name="id"><generator class="native" /></id><property name="name" column="name"/><set name="stus" table="teacher_student"><!-- 外键,老师表根据teacher_id --><key column="teacher_id"></key><!-- 设置匹配的多对多的关系和另一方的主键 --><many-to-many class="Student" column="student_id"></many-to-many></set></class></hibernate-mapping>3、插入自动生成表操作://添加员工和IDcard的方法static void AddTeacherAndStudent(){Session s = null;Transaction tx = null;try{Student stu = new Student();Set<Teacher> ts = new HashSet<Teacher>();Set<Student> ss = new HashSet<Student>();s = HibernateUtil.getSession();tx = s.beginTransaction();Teacher t1 = new Teacher();ts.add(t1);Teacher t2 = new Teacher();ts.add(t2);Student s1 = new Student();ss.add(s1);Student s2 = new Student();ss.add(s2);//tea.setStus(sets);//stu.setTeas(sett);t1.setName("t1");t2.setName("t2");s1.setName("s1");s2.setName("s2");t1.setStus(ss);s.save(t1);s.save(t2);s.save(s1);s.save(s2);tx.commit();}catch(HibernateException e){//判断事务有没有完全提交的判断方式if(tx != null){tx.rollback();throw e;}}finally{if(s != null){s.close();}}}
JAVA基础-java中ET的差异
ByteBuffer跟String的互相转换
vim 编辑器的三种模式怎么切换
电脑编码
地图reduce编程模型介绍
Java基础java缓存读写资料小例子
学习jar下令 创建和解压jar文件包
java生成随机数、四舍五入、当前时间的
[猖獗Java讲义精粹] 第十一章|多线程
Java Thread 小结