当前位置: 代码迷 >> Java Web开发 >> 关于hibernate 映射hbm.xml的有关问题
  详细解决方案

关于hibernate 映射hbm.xml的有关问题

热度:206   发布时间:2016-04-14 21:07:14.0
关于hibernate 映射hbm.xml的问题
基础类BaseEntity:
private String id;
private Date createDate;
private Date modifyDate;


下面有20+个继承类
1.EntSummary 
public class EntSummary extends BaseEntity {

private String sumImage;//示例图片地址
private String sumIndex;//显示顺序

private String sumType;//类型 0公司简介 1五大创新 2服务流程 详细参考数据字典表
private String sumStatus;//状态 0正常(默认) 1失效 2过期
private String sumDescription;//描述

2.EntItems
public class EntItems extends BaseEntity {

private String itemName;//项目名称
private int itemPrice;//原价格,正常价格
private int itemSalePrice;//现价格,特惠价格
private String itemDescription;//描述 
private String itemImage;//logo图片,是个路径地址
private String itemStatus;//状态 0正常(默认) 1失效 2过期 3特价

3.EntTrades 
public class EntTrades extends BaseEntity {

private String modCode;//车辆型号
private String itemName;//项目名称
private int tradePrice;//价格

private String memName;//姓名
private String memPhone;//电话
private String memAddress;//地址
private String memMessage;//客户留言 100字
private String memCoupon;//优惠券编号


等等。还有很多

请问 BaseEntity EntTrades EntSummary 这个几个表的映射文件 *.hbm.xml  应该怎么写?
------解决思路----------------------
你的基础类里的字段 相当于 在各个子类对应的表中都存在,所以hbm.xml文件中除了写子类中的字段之外,再加上父类中的两个字段
------解决思路----------------------
有三种方案可供选择,
1.假设A为父类,B、C都为继承A的子类,使用的@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 为每一个类(不管是子类还是父类)创建一张表,这种方法的关键是要保证ID不能重复,hibernate中的做法是另外建一张存储ID的表M,每一次添加A类或A的子类时候,都将表M中的ID值加1,然后拿出。

2.使用一张表装下父类和子类中的所有属性,当然该表中存在大量的冗余,使用的是@DiscriminatorColumn和@DiscriminatorValue来标识不同的类。

3.使用的是join方式 .一张总表包含父类的基本定义,不同的子类在不同的表中,只包含独有的属性,但存在对总表的引用。

具体请看:http://blog.csdn.net/u013762572/article/details/43113449
------解决思路----------------------
引用:
直接用eclipse的自动映射生成文件     方便简单快捷   不会出错  
英雄所见略同啊
  相关解决方案