Hibernate 继承映射(一)
来源:互联网 发布:php源码 微信企业号 编辑:程序博客网 时间:2024/06/17 17:58
首先是:数据库表设计
然后实体类中的Person类
public class Person {protected Integer id;protected String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
学生继承Person。
public class Student extends Person {private String school;public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}}
然后Worker继承Person
public class Worker extends Person{private String factory;public String getFactory() {return factory;}public void setFactory(String factory) {this.factory = factory;}}
然后配置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"><hibernate-mapping package="entity"> <class name="Person" table="person"> <id name="id" type="java.lang.Integer" column="id"> <generator class="native"></generator> </id> <!-- 标志列,判断是student还是worker的列 --> <discriminator column="type" type="string"></discriminator> <property name="name" column="name" type="string"></property> <!-- Student子类 并设置student的标志是student--> <subclass name="Student" discriminator-value="student"> <property name="school" column="school" type="string"></property> </subclass> <!-- Worker子类 并设置worker的标志是worker--> <subclass name="Worker" discriminator-value="worker"> <property name="factory" column="factory" type="string"></property> </subclass> </class></hibernate-mapping>然后测试类
package Run;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import entity.Student;import entity.Worker;public class Run{Session session=null;SessionFactory sf=null;public static void main(String[] args) {new Run().test1();}public void test1(){Student s1=new Student();s1.setName("新色");s1.setSchool("海淀中学");Worker w1=new Worker();w1.setName("老张2号");w1.setFactory("新水网");try {session=new Configuration().configure().buildSessionFactory().openSession();session.beginTransaction();session.save(s1);session.save(w1);session.beginTransaction().commit();} catch (HibernateException e) {e.printStackTrace();session.beginTransaction().rollback();}finally{if(session!=null)session.close();}}}
执行后控制台输出
Hibernate: insert into person (name, school, type) values (?, ?, 'student')Hibernate: insert into person (name, factory, type) values (?, ?, 'worker')
再看数据库结果
- Hibernate 继承映射(一)
- Hibernate继承映射方式一
- hibernate映射继承关系一
- 精通Hibernate之映射继承关系一
- hibernate的继承关系映射(一)
- Hibernate中继承关系映射一
- 【HIbernate框架学习】:Hibernate对象继承关系映射(一)
- Hibernate高级映射 --- 继承映射
- Hibernate高级映射--继承映射
- Hibernate高级映射-继承映射
- Hibernate映射解析---继承映射
- Hibernate映射解析---继承映射
- Hibernate映射解析---继承映射
- Hibernate 简化继承映射
- Hibernate 简化继承映射
- Hibernate 简化继承映射
- Hibernate 简化继承映射
- Hibernate 简化继承映射
- eclipse android 绑定 第三方 源代码
- 如果系统能够保证不在0x000000007fffffff以上的地址分配内存,那么应用程序就能够正常运行。把一个高33位都为0的64位地址截断为32位地址,无论如何都不会产生问题。系统可以提供这一保证,
- Pku2352 Stars 树状数组
- 我佛慈悲 赐我雨水
- poj_1523 SPF (求割点)
- Hibernate 继承映射(一)
- Android中的Bmp图形格式(ALPHA_8,ARGB_4444,ARGB_8888,RGB_565)
- 数据库断言
- 1.减少spring的配置文件:bean
- Eclipse安装SVN
- uva 10624Super Number
- 2.减少spring的配置文件:applicationContext-common.xml
- cocos2d使用纹理渲染需要注意的地方
- Unix传奇