hibernate中many-to-one实例一
2010-12-01 00:32
337 查看
可以发现,添加一个教师的同时指定一个学生,这种方式相当糟糕,合理的方式应该是在添加学生的时候指定教师。即在学生类里指
定教师对象,配置文件里配置成many-to-one。
单纯只使用many-to-one:
在Student类里加入Teacher teacher属性。
注释掉teacher.hbm.xml里的<set ...></set>内容
在student.hbm.xml里入many-to-one属性:
做完上述工作即可进行测试了:
Test2.java
定教师对象,配置文件里配置成many-to-one。
单纯只使用many-to-one:
在Student类里加入Teacher teacher属性。
注释掉teacher.hbm.xml里的<set ...></set>内容
在student.hbm.xml里入many-to-one属性:
<?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="com.sjtu.xw.pojo2"> <class name="Student" table="student"> <id name="id" column="id"> <generator class="native"></generator> </id> <property name="stuName" column="studentName" length="30" /> <many-to-one name="teacher" column="teacherId" class="Teacher" fetch="join" lazy="false" /> <!-- 这里的column="teacherId"是指明了自身(student表)表里的teacherId属性,指向teacher表的外键 --> </class> </hibernate-mapping>
做完上述工作即可进行测试了:
Test2.java
package com.sjtu.xw.test; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import com.sjtu.xw.pojo2.Student; import com.sjtu.xw.pojo2.Teacher; import com.sjtu.xw.util.HibernateUtil; public class Test2 { public static void main(String[] args) { Test2 test = new Test2(); // test.addStudent();//通过 //test.addTeacher();//通过 test.test(); } public void addStudent() { Teacher teacher = new Teacher(); teacher.setId(1); Student student = new Student(); student.setStuName("student8"); student.setTeacher(teacher); SessionFactory sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); session.save(student); tx.commit(); session.close(); sf.close(); } public void addTeacher() { Teacher teacher = new Teacher(); teacher.setTeaName("Teacher5"); SessionFactory sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); session.save(teacher); tx.commit(); session.close(); sf.close(); } public void test() { SessionFactory sf = HibernateUtil.getSessionFactory(); Session session = sf.openSession(); Transaction tx = session.beginTransaction(); List list = session.createQuery("from Student s where s.id=1").list(); Student s = (Student) list.get(0);//找student的id为1的学生,并获取老师的信息。 // System.out.println(s); System.out.println(s.getTeacher()); System.out.println(s.getTeacher().getTeaName()); tx.commit(); session.close(); sf.close(); } }
相关文章推荐
- hibernate中many-to-one实例一
- hibernate的one-to-many和many-to-one实例
- Hibernate实体关系映射(OneToMany单边)——完整实例
- Hibernate学习篇06——onetomany简单实例
- Hibernate多对一实例【xml和注解】many-to-one(十六)
- hibernate的one-to-many实例
- hibernate中一对多(one-to-many)的实例
- hibernate中one-to-many实例一
- Hibernate中onetomany实例一
- Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例
- hibernate中one-to-many实例一
- hibernate--one-to-many
- hibernate映射技巧one-to-many(单项一对多)
- hibernate:many to one
- 升级Hibernate3.5:javax.persistence.OneToMany.orphanRemoval()Z
- hibernate映射文件set key one-to-many
- Hibernate中的manytomany映射实例一
- hibernate many to one 非主键关联
- 一个完整的hibernate的one-to-many的例子
- hibernate基于注解的维护权反转:@OneToMany(mappedBy=)