本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7592142
建立时间:2006年5月29日




[Hibernate]hibernate继承-joined-subclass 已更新(五)
软件技术

lhwork 发表于 2007/1/7 14:07:46

还是和前面一样。。先看先看由满江红翻译团队(RedSaga Translate Team)翻译的配置说明每个子类可能被映射到他自己的表中(每个子类一个表的策略)。被继承的状态通过和超类的表关联得到。我们使用<joined-subclass>元素。 <joined-subclass name="ClassName" (1) table="tablename" (2) proxy="ProxyInterface" (3) lazy="true|false" (4) dynamic-update="true|false" dynamic-insert="true|false" schema="schema" catalog="catalog" extends="SuperclassName" persister="ClassName" subselect="SQL expression" entity-name="EntityName" node="element-name"> <key .... > <property .... /> .....</joined-subclass>(1)name: 子类的全限定名。 (2)table: 子类的表名. (3)proxy (可选): 指定一个类或者接口,在延迟装载时作为代理使用。 (4)lazy (可选, 默认是 true): 设置为 lazy="false" 禁止使用延迟装载。 这种映射策略不需要指定辨别标志(discriminator)字段。但是,每一个子类都必须使用<key>元素指定一个表字段来持有对象的标识符。好了。。。开始 写代码了。。。1.建表500)this.width=500'>create table animal500)this.width=500'>(aid varchar(32) not null primary key)500)this.width=500'>500)this.width=500'>create table dog500)this.width=500'>(aid varchar(32) not null primary key,500)this.width=500'> dname varchar(16)500)this.width=500'>)500)this.width=500'>500)this.width=500'>create table cat500)this.width=500'>(aid varchar(32) not null primary key,500)this.width=500'> cname varchar(16)500)this.width=500'>) 2 写vo 2.1 Animal.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>    private String aid;500)this.width=500'>  //getter setter2.2 Car.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Cat extends Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>    private String cname;500)this.width=500'>500)this.width=500'>//写上 get set 方法  2.3Dog.java500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>public class Dog extends Animal500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>    private String dname;500)this.width=500'>//写getter setter3.写配置文件500)this.width=500'><?xml version="1.0"?>500)this.width=500'><!DOCTYPE hibernate-mapping500)this.width=500'>    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"500)this.width=500'>    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">500)this.width=500'>500)this.width=500'><hibernate-mapping>500)this.width=500'>500)this.width=500'>    <class name="com.test.Animal" table="animal">  500)this.width=500'>500)this.width=500'>        <id name="aid" type="string" unsaved-value="null" >500)this.width=500'>            <column name="aid" sql-type="char(32)" not-null="true"/>500)this.width=500'>            <generator class="uuid.hex"/>500)this.width=500'>        </id>500)this.width=500'>        500)this.width=500'>        <joined-subclass name="com.test.Dog" table="dog">500)this.width=500'>            <key column="aid"/>500)this.width=500'>            <property name="dname">500)this.width=500'>                <column name="dname" sql-type="varchar(16)"/>500)this.width=500'>            </property>500)this.width=500'>        </joined-subclass>500)this.width=500'>500)this.width=500'>        <joined-subclass name="com.test.Cat" table="cat">500)this.width=500'>            <key column="aid"/>500)this.width=500'>            <property name="cname">500)this.width=500'>                <column name="cname" sql-type="varchar(16)"/>500)this.width=500'>            </property>500)this.width=500'>        </joined-subclass>500)this.width=500'>500)this.width=500'>    </class>500)this.width=500'>500)this.width=500'></hibernate-mapping>4.写上测试类500)this.width=500'>package com.test;500)this.width=500'>500)this.width=500'>import net.sf.hibernate.Session;500)this.width=500'>import net.sf.hibernate.SessionFactory;500)this.width=500'>import net.sf.hibernate.cfg.Configuration;500)this.width=500'>import net.sf.hibernate.*;500)this.width=500'>import java.sql.*;500)this.width=500'>import java.util.List;500)this.width=500'>import java.util.Iterator;500)this.width=500'>500)this.width=500'>public class TestInherit2500)this.width=500'>500)this.width=500'>500)this.width=500'>{500)this.width=500'>    SessionFactory sf;500)this.width=500'>    Session session;500)this.width=500'>    public TestInherit2()500)this.width=500'>500)this.width=500'>    500)this.width=500'>{500)this.width=500'>        try500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>            Configuration cfg = new Configuration();500)this.width=500'>            sf = cfg.addClass(Animal.class).buildSessionFactory();500)this.width=500'>        }500)this.width=500'>        catch(HibernateException ex)500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>            ex.printStackTrace();500)this.width=500'>        }500)this.width=500'>    }500)this.width=500'>    //插入500)this.width=500'>    public void doCreate()500)this.width=500'>500)this.width=500'>    500)this.width=500'>{500)this.width=500'>        try500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>            session = sf.openSession();500)this.width=500'>500)this.width=500'>            Dog dog = new Dog();500)this.width=500'>            dog.setDname("small dog");500)this.width=500'>            Cat cat = new Cat();500)this.width=500'>            cat.setCname("small cat");500)this.width=500'>            session.save(dog);500)this.width=500'>            session.save(cat);500)this.width=500'>            session.flush();500)this.width=500'>            session.connection().commit();500)this.width=500'>500)this.width=500'>        }500)this.width=500'>        catch(HibernateException ex)500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>            ex.printStackTrace();500)this.width=500'>        }500)this.width=500'>        catch(SQLException ex1)500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>            ex1.printStackTrace();500)this.width=500'>        }500)this.width=500'>        finally500)this.width=500'>500)this.width=500'>        500)this.width=500'>{500)this.width=500'>500)this.width=500'>                try500)this.width=500'>{500)this.width=500'>                    session.close();500)this.width=500'>                }500)this.width=500'>500)this.width=500'>                catch(HibernateException ex2)500)this.width=500'>{500)this.width=500'>                }500)this.width=500'>        }500)this.width=500'>500)this.width=500'>    }500)this.width=500'>    //查询500)this.width=500'>    public void doQuery()500)this.width=500'>500)this.width=500'>    500)this.width=500'>{500)this.width=500'>500)this.width=500'>        try500)this.width=500'>{500)this.width=500'>            session = sf.openSession();500)this.width=500'>            Query q = session.createQuery("select d from Dog as d");500)this.width=500'>            List l = q.list();500)this.width=500'>            Dog dog = null;500)this.width=500'>            Cat cat = null;500)this.width=500'>            for(int i=0;i<l.size();i++)500)this.width=500'>500)this.width=500'>            500)this.width=500'>{500)this.width=500'>                dog = (Dog)l.get(i);500)this.width=500'>                System.out.println(dog.getDname());500)this.width=500'>            }500)this.width=500'>        }500)this.width=500'>500)this.width=500'>        catch(HibernateException ex)500)this.width=500'>{500)this.width=500'>            ex.printStackTrace();500)this.width=500'>        }500)this.width=500'>500)this.width=500'>        finally500)this.width=500'>{500)this.width=500'>500)this.width=500'>            try500)this.width=500'>{500)this.width=500'>                session.close();500)this.width=500'>            }500)this.width=500'>500)this.width=500'>            catch(HibernateException ex2)500)this.width=500'>{500)this.width=500'>            }500)this.width=500'>        }500)this.width=500'>    }500)this.width=500'>    public static void main(String[] args)500)this.width=500'>500)this.width=500'>    500)this.width=500'>{500)this.width=500'>        TestInherit2 t = new TestInherit2();500)this.width=500'>        //t.doCreate();500)this.width=500'>        t.doQuery();500)this.width=500'>    }500)this.width=500'>}500)this.width=500'>


阅读全文(1598) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144765161 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号