首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Hibernate 这四个对象,应该用什么关系来做

2011-12-26 
Hibernate 这4个对象,应该用什么关系来做?有个基础对象articlePO.java ,里面是一些文章的基础属性,如title

Hibernate 这4个对象,应该用什么关系来做?
有个基础对象articlePO.java ,里面是一些文章的基础属性,如title,keywords等等。 

文章类型又分为三种类型:news(信息新闻),falsh(fash文章),product(商品文章)。这三种类型又有各自的属性,但基础属性都是article里面。 

当发文章的时候, 
如发news文章时,那么就等于article属性+news 属性一起提交Dao。 
当发falsh文章时,就等于article属性+falsh属性一起提交Dao 
当发product文章的时,就等于article属性+product属性一起提给Dao。 


我简单写一下这4个PO,请帮我写出来他们的hbm.xml。用什么关系来做,是one-to-one,还是继承,谢谢! 

Article.java 
int id; //id 
String title; //标题 
String keywords; //meta.关键字 
String description; //meta.描述 
int sort;//排序 
... 

News.java 
int id; //id 
boolean page;//是否分页 
int pagesize; //分页大小 

Falsh.java 
int id; //id 
String falshUrl;//falsh路径 
String height; //falsh高度 
.. 

Product.java 
int id;//id 
String pname;//商品名 
String psize;//商品规格 
.. 

从上面大家应该可以看出,falsh,news,product在article里面都有共有的东西,也有各自的属性。应该怎样做关系,怎么建表,建立几个?

能不能简单写一下它们的hbm.xml 

我想看看他们的关系应该怎么做,是one-to-one吗?不会写啊我!迷茫

[解决办法]
每个子类一张表(Table per subclass),一共四张表
大概代码如下:

XML code
<class name="Article" table="Article">    <id name="id" type="long" column="id">        <generator class="native"/>    </id>    <property name="title" column="title"/>    <property name="keywords" column="keywords"/>    <many-to-one name="catalog"  lazy="true"  class="Catalog">        <column name="article_id"></column>    </many-to-one>    <set name="comments" inverse="true" cascade="all" lazy="true">        <key column="article_id"/>        <one-to-many  class="Comment" />    </set>    ...    <joined-subclass name="News" table="News">        <key column="id"/>        <property name="page" column="page"/>        <property name="pagesize" column="pagesize"/>        ...    </joined-subclass>    <joined-subclass name="Falsh" table="Falsh">        <key column="id"/>        <property name="falshUrl" column="falshUrl"/>        <property name="height" column="height"/>        ...    </joined-subclass>    <joined-subclass name="Product" table="Product">        <key column="id"/>        <property name="pname" column="pname"/>        <property name="psize" column="psize"/>        ...    </joined-subclass></class>
[解决办法]
用hibernate自动生成工具生成bhm.xml等文件.

热点排行