数据库结构:
create table personJ (id varchar ( 32 ),name varchar ( 32 )); create table studentJ (id varchar ( 32 ),cardnum varchar ( 32 )); create table teacherJ (id varchar ( 32 ),salary double );
Hibernate.cfg.xml
<? xml version='1.0' encoding='UTF-8' ?> <! DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" > <!-- Generated by MyEclipse Hibernate Tools. --> < hibernate-configuration > < session-factory > < property name ="connection.username" > root </ property > < property name ="connection.url" > jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312& useUnicode=true </ property > < property name ="dialect" > org.hibernate.dialect.MySQLDialect </ property > < property name ="myeclipse.connection.profile" > mysql </ property > < property name ="connection.password" > 1234 </ property > < property name ="connection.driver_class" > com.mysql.jdbc.Driver </ property > < property name ="hibernate.dialect" > org.hibernate.dialect.MySQLDialect </ property > < property name ="hibernate.show_sql" > true </ property > < property name ="current_session_context_class" > thread </ property > < property name ="jdbc.batch_size" > 15 </ property > < mapping resource ="Mapping/TPCJoinclass/Person.hbm.xml" /> </ session-factory > </ hibernate-configuration >
pojo
package Mapping.TPCJoinclass; public class Person ... { private String id; private String name; public String getId() ... { return id; } public void setId(String id) ... { this .id = id; } public String getName() ... { return name; } public void setName(String name) ... { this .name = name; } }package Mapping.TPCJoinclass; public class Student extends Person ... { private String cardnum; public String getCardnum() ... { return cardnum; } public void setCardnum(String cardnum) ... { this .cardnum = cardnum; } }package Mapping.TPCJoinclass; public class Teacher extends Person ... { private Double salary; public Double getSalary() ... { return salary; } public void setSalary(Double salary) ... { this .salary = salary; } }
Person.hbm.xml
<? xml version="1.0" encoding="utf-8" ?> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> < hibernate-mapping > < class name ="Mapping.TPCJoinclass.Person" table ="personJ" > < id name ="id" unsaved-value ="null" > < generator class ="uuid.hex" ></ generator > </ id > < property name ="name" type ="string" column ="name" ></ property > < joined-subclass name ="Mapping.TPCJoinclass.Student" table="studentJ" > < key column ="id" ></ key > < property name ="cardnum" type ="string" ></ property > </ joined-subclass > < joined-subclass name ="Mapping.TPCJoinclass.Teacher" table="teacherJ" > < key column ="id" ></ key > < property name ="salary" type ="double" ></ property > </ joined-subclass > </ class > </ hibernate-mapping >
测试代码:
package Mapping.TPCJoinclass; import java.io.File; import java.util.Iterator; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Test ... { public static void main(String[] args) ... { String filePath = System.getProperty( " user.dir " ) + File.separator + " src/Mapping/TPCJoinclass " + File.separator + " hibernate.cfg.xml " ; File file = new File(filePath); SessionFactory sessionFactory = new Configuration().configure(file).buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction t = session.beginTransaction(); Student stu = new Student(); stu.setCardnum( " 11111 " ); stu.setName( " tom1stu " ); Teacher teacher = new Teacher(); teacher.setSalary( new Double( 12345 )); teacher.setName( " tom1teacher " ); session.save(stu); session.save(teacher); t.commit(); } }
结果:
Hibernate: insert into personJ (name, id) values (?, ?) Hibernate: insert into studentJ (cardnum, id) values (?, ?) Hibernate: insert into personJ (name, id) values (?, ?) Hibernate: insert into teacherJ (salary, id) values (?, ?)