读书人

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

发布时间: 2011-12-26 23:09:59 作者: rapoo

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等文件.

读书人网 >J2EE开发

热点推荐