Hiberante的对象继承关系之--TPC一张表表示整个继承关系

时间:2021-08-08 14:46:09

数据库结构:

 

Hiberante的对象继承关系之--TPC一张表表示整个继承关系create table personTPC (id varchar(32),name varchar(32),personType varchar(32),cardnum varchar(32),salary double);

 

Hiberante的对象继承关系之--TPC一张表表示整个继承关系<?xml version='1.0' encoding='UTF-8'?>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<!DOCTYPE hibernate-configuration PUBLIC
Hiberante的对象继承关系之--TPC一张表表示整个继承关系          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
Hiberante的对象继承关系之--TPC一张表表示整个继承关系          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<!-- Generated by MyEclipse Hibernate Tools.                   -->
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<hibernate-configuration>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<session-factory>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="connection.username">root</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="connection.url">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
&amp;useUnicode=true
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="dialect">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        org.hibernate.dialect.MySQLDialect
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="myeclipse.connection.profile">mysql</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="connection.password">1234</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="connection.driver_class">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        com.mysql.jdbc.Driver
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="hibernate.dialect">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        org.hibernate.dialect.MySQLDialect
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="hibernate.show_sql">true</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="current_session_context_class">thread</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="jdbc.batch_size">15</property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<mapping resource="Mapping/TPCSubclass/Person.hbm.xml" />
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
</session-factory>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
</hibernate-configuration>

 poj

 

Hiberante的对象继承关系之--TPC一张表表示整个继承关系package Mapping.TPC;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public class Person ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系  
private String id;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系  
private String name;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public String getId() ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
return id;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public void setId(String id) ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
this.id = id;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public String getName() ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
return name;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public void setName(String name) ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
this.name = name;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
package Mapping.TPC;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public class Student extends Person ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系  
private String cardnum;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public String getCardnum() ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
return cardnum;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public void setCardnum(String cardnum) ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
this.cardnum = cardnum;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
package Mapping.TPC;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public class Teacher extends Person ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系   
private Double salary;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public Double getSalary() ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
return salary;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public void setSalary(Double salary) ...{
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
this.salary = salary;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系

 

Person.hbm.xml

 

Hiberante的对象继承关系之--TPC一张表表示整个继承关系<?xml version="1.0" encoding="utf-8"?>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
Hiberante的对象继承关系之--TPC一张表表示整个继承关系"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<!-- 
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    Mapping file autogenerated by MyEclipse - Hibernate Tools
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
-->
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<hibernate-mapping>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
<class name="Mapping.TPCSubclass.Person" table="personTPC" >
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<id name="id" unsaved-value="null">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系      
<generator class="uuid.hex"></generator>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</id>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<discriminator column="personType" type="string"></discriminator>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<property name="name" type="string" column="name"></property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
<subclass name="Mapping.TPCSubclass.Student" discriminator-value="student">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系      
<property name="cardnum" type="string"></property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</subclass>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系     
<subclass name="Mapping.TPCSubclass.Teacher" discriminator-value="teacher">
Hiberante的对象继承关系之--TPC一张表表示整个继承关系      
<property name="salary" type="double"></property>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
</subclass>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
</class>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
</hibernate-mapping>
Hiberante的对象继承关系之--TPC一张表表示整个继承关系

 

测试代码:

 

Hiberante的对象继承关系之--TPC一张表表示整个继承关系package Mapping.TPCSubclass;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import java.io.File;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import java.util.Iterator;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import org.hibernate.Query;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import org.hibernate.Session;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import org.hibernate.SessionFactory;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import org.hibernate.Transaction;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
import org.hibernate.cfg.Configuration;
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系
public class Test {
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系    
public static void main(String[] args) {
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        String filePath
=System.getProperty("user.dir")+File.separator+"src/Mapping/TPCSubclass"+File.separator+"hibernate.cfg.xml";
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        File file
=new File(filePath);
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        System.out.println(filePath);
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        SessionFactory sessionFactory
=new Configuration().configure(file).buildSessionFactory();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        Session session
=sessionFactory.openSession();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        Transaction t
=session.beginTransaction();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        Student stu
=new Student();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        stu.setCardnum(
"11111");
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        stu.setName(
"tom1stu");
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        Teacher teacher
=new Teacher();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        teacher.setSalary(
new Double(12345));
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        teacher.setName(
"tom1teacher");
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        session.save(stu);
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        session.save(teacher);
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        
//单独查找student
Hiberante的对象继承关系之--TPC一张表表示整个继承关系
        Query query=session.createQuery("from Mapping.TPCSubclass.Student");
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        Iterator iter
=query.list().iterator();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系Hiberante的对象继承关系之--TPC一张表表示整个继承关系        
while(iter.hasNext()){
Hiberante的对象继承关系之--TPC一张表表示整个继承关系            Person person
=(Person)iter.next();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系            System.out.println(person.getName());
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        }

Hiberante的对象继承关系之--TPC一张表表示整个继承关系        t.commit();
Hiberante的对象继承关系之--TPC一张表表示整个继承关系        
Hiberante的对象继承关系之--TPC一张表表示整个继承关系    }

Hiberante的对象继承关系之--TPC一张表表示整个继承关系
Hiberante的对象继承关系之--TPC一张表表示整个继承关系}

Hiberante的对象继承关系之--TPC一张表表示整个继承关系

测试结果:

Hibernate: insert into personTPC (name, cardnum, personType, id) values (?, ?, 'student', ?)
Hibernate: insert into personTPC (name, salary, personType, id) values (?, ?, 'teacher', ?)
Hibernate: select student0_.id as id0_, student0_.name as name0_, student0_.cardnum as cardnum0_ from personTPC student0_ where student0_.personType='student'
tom1stu