系统有3张表:
=============================================================================
有一个对象扩展表(ExtObj)  主要用于存储下面2类对象(雇员和档案信息)的共用属性
obj_id  对象id (该列的值根据obj_type的不同可为雇员表或档案表的主键值)
obj_type 对象类型(1表示雇员,2表示档案信息)
rcd_per  录入人
rcd_time 录入时间 
=============================================================================
有一个雇员表(Employee)
id 主键
name 姓名
age 年龄
==============================================================================
有一个档案信息表(Infor)
id  主键
content 内容问怎么设计实体以及映射,才满足要求
其中ExtObj相当于雇员表或档案信息表的扩展表 ,和2类对象都是一一对应的关系

解决方案 »

  1.   

    用PowerDesigner去弄吧 
    自己关系弄清楚了就很简单了
      

  2.   

    在深入浅出HIBERNATE里有详细的介绍
      

  3.   

    用联合主键提出一种解决方案:
    @Embeddable
    public class ExtObjPK implements Serializable{
        private Integer id;//假设Employee和Infor的id都是Integer类,如果不是就统一为String类型
        private String className;//类名,如:Employee.getClass().getName();    private Object toObject(){
           Class clazz = Class.forName(this.className);//上塑成类
           Constructor  c = clazz.getConstructor(Integer.class);//生成一个构造器
           Object obj = c.newInstance(id);//构造出一个对象,注意:Employee和Infor类必须有相应的构造方法。
        }    public ExtObjPK(Integer id, String className){
           this.id = id;
           this. className = className;
        }
    }@Entity
    public class ExtObj implements Serializable{
        @Id
        private ExtObjPK id;
        private YourClass rcd_per;  //录入人
        private YourClass rcd_time; //录入时间
        private Employee employee;
        private Infor infor;    public void setId(){
          if(employee != null)
              this.id = new ExtObjPK(employee.getId(),employee.getClass().getName());
          if(infor != null)
              this.id = new ExtObjPK(infor.getId(), infor.getClass().getName());
        }    other getter & setter ...
    }@Entity
    public class Employee{    private Integer id;
        private String name;
         private Integer age;
        ...    pubic Employee(Integer id){this.id = id;}
    }@Entity
    public class Infor{    private Integer id;
        private String content;
        ...    pubic Infor(Integer id){this.id = id;}
    }
      

  4.   

    还没搞过这种.不过从java面向对象角度考虑,先抛砖引玉的给出我的看法:雇员,档案表还是按照普通的pojo进行映射.但让他们都实现同一个接口Interface,该接口没有任何方法和成员,只是一个标识,就像Serializable和Clonable一样.至于对象扩展表,可以添加一个对Interface的引用以建立一对一关系.这样雇员,档案都可以添加进来,具体是雇员还是档案,在使用的时候再判断.比如instanceof
      

  5.   

    以上只是抽取了很小一部份举个例子,实际上对象扩展表里面的内容不是什么记录日志用的另外这样说明一下:你就明白3张表的关系了
    雇员表employee表假设有一条数据
    id                     name age
    ABDCDEF68853ABAAA       张三  18档案资料表有一条数据
    id                     content
    INF20081101133021X0001 关于数据科技创新的。对象扩展表的数据为
    obj_id                 obj_type rcd_per  rcd_time 
    ABDCDEF68853ABAAA      1        admin    20091223   (和员工表数据一一对应) 
    INF20081101133021X0001 2        admin    20100111   (和档案表数据一一对应)
      

  6.   

    8楼的   能贴哈mapping文件最好了
      

  7.   

    其他两个类都很简单
    ExtObj这个实体类,的主键看来要设计成联合主键obj_type和obj_id用过hibernate这么久了,我就没这样用过,一般数据库字典用的是继承映射。。
      

  8.   

    这个表不考虑什么键,保证数据正确就行了比如保存对象employee的时候,要让hibernate插入2张表数据