您的位置:首页 > 其它

hibernate类之间继承关系映射

2016-07-23 19:05 232 查看
1.示图



2.Animal.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">

<!-- Generated 2016-7-20 10:48:06 by Hibernate Tools 3.4.0.CR1 -->

<hibernate-mapping>

     <class name="com.eduask.pojo.Animal" table="Animal">

        <id name="id" type="int">

            <column name="ID" />

            <generator class="assigned"/>

        </id>

        <discriminator column="age" type="string"></discriminator>

         <property name="name" type="java.lang.String">

         <column name="NAME" />

        </property>

        <!--使用subclass时必定使用discriminator,且放在id下面  -->

        <subclass name="com.eduask.pojo.Cat" discriminator-value="10">

        <property name="color"></property>

        </subclass>

        <!--使用union-subclass -->

        <!-- <union-subclass name="com.eduask.pojo.Cat" table="Cat">

        <property name="color"></property>

        </union-subclass> 

        -->

        </class>

</hibernate-mapping>

3.CatTest.java

package com.eduask.test;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.junit.Before;

import org.junit.Test;

import com.eduask.pojo.Cat;

import com.eduask.util.HibernateUtil;

public class CatTest {

private SessionFactory sessionFactory;

@Before

public void setUp(){
sessionFactory=HibernateUtil.getSessionFactory();

 }

@Test

public void catTest(){
Session session=sessionFactory.openSession();
Transaction tr=session.beginTransaction();
Cat c=new Cat();
c.setName("小猫之一");
c.setColor("black");
session.save(c);
tr.commit();
session.close();

}

}

4.使用subclass程序运行之后,查看数据库如下:



5.使用union-subclass程序运行之后,查看数据库:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息