把你要用到的table通过hibernate映射出来就可以了 我觉得三个table都需要映射

解决方案 »

  1.   

    员工table 肯定是一个对象 (员工object)离职table 也可以设为一个对象(离职员工object)。 离职object 和 员工object是 one - to - one的关系,因为一个员工不可能多次离职。调职table 同样可以设为对象 (调职员工object) 。 调职object 和 员工 object 是 many - to - one的关系,同一个员工能多次调职。
      

  2.   

    如果简单的直接就写到一个表里即可,加几个字段,复杂点面向对象的用继承策略也行
    父表:员工表
    子表:离职表,调职表、在职表......用hibernate的继承策略可以搞定
    第 9 章 继承映射(Inheritance Mappings)
    9.1.  三种策略
    Hibernate支持三种基本的继承映射策略: 每个类分层结构一张表(table per class hierarchy) 每个子类一张表(table per subclass) 每个具体类一张表(table per concrete class) 此外,Hibernate还支持第四种稍有不同的多态映射策略: 隐式多态(implicit polymorphism) 对于同一个继承层次内的不同分支,可以采用不同的映射策略,然后用隐式多 态来完成跨越整个层次的多态。但是在同一个<class>根元素 下,Hibernate不支持混合了元素<subclass>、 <joined-subclass>和<union-subclass> 的映射。在同一个<class>元素下,可以混合使用 “每个类分层结构一张表”(table per hierarchy) 和“每个子类一张表”(table per subclass) 这两种映射策略,这是通过结合元素<subclass>和 <join>来实现的(见后)。 在多个映射文件中,可以直接在hibernate-mapping根下定义subclass,union-subclass和joined-subclass。也就是说,你可以仅加入一个新的映射文件来扩展类层次。你必须在subclass的映射中指明extends属性,给出一个之前定义的超类的名字。注意,在以前,这一功能对映射文件的顺序有严格的要求,从Hibernate 3开始,使用extends关键字的时侯,对映射文件的顺序不再有要求;但在每个映射文件里,超类必须在子类之前定义。 .......
    就不全贴了,楼主去Hibernate_3.2.0_Reference_zh_CN.chm文档上找到这章,仔细看看吧
      

  3.   

    对象呢,有属性,有方法,有事件。其实离职调职可以与姓名,性别等
    一起看成是对象的属性。也就是看成是否离职?是否调职?就像可视
    化组件的Visible属性的是否可见一样。一旦Visible属性为真(也
    就是确实离职或确实调职),便会引发对象的其他一些属性也可以进
    行确定,如大小,颜色等。但是,这些对于对象来说,都是相同的,
    都是属性。也就是说,如果离职为真,那么就可以确定离职原因,离
    职描述,离职批准人等。但这些都是相同的元素,都是对象的属性。
    所以,如果面向对象,就不应该建3个table。而只应该建一个,每一
    行都是一个对象的属性。有一列离职,用0和1表示真和假,查表时先查
    此列,若为假就不必查如离职原因,离职描述,离职批准人之类的属性
    了。就像是先看可视化组件的Visible属性是否为真,若为假就无需
    去看如大小,颜色之类的属性了。因为,组件不可见时,大小或者颜色
    根本就如同不存在。调职也是相同的,这样一来,你的表会减少很多重
    复的列,也就基本不会有交集了,呵呵
      

  4.   

    5楼的一上来把问题提升了,汗一个,简单的不再多加表的情况下,
    员工表加一个状态值就ok了,区别离职与在职(实在要加换岗状态也行),新员工a进来,建立员工表记录,状态在职,
    a在公司内部换岗,建立换岗记录表,员工表只是部门字段变化,换岗表与员工表关系n对1,
    a从公司离职,建立离职表,员工表员工状态离职,一般是1对1把,别说这人进进出出的,你说的动作 需要表对它进行记录,所以有添加离职表,换岗表记录,
    对应的员工状态会有所变化,所以对员工表进行修改,