最近在做一个小网站,其中有这样的要求,
假如我这张表是一张工作表,其中有部门,岗位的字段,
但是我想把主键ID设置成他对应的=“部门”+“岗位”+sequence(这个sequence是oracle的)不知道该怎么解决了呢,在线求解哈~~~
谢谢~~~最好能有部分代码实现了的

解决方案 »

  1.   

    复合主键吗?? 你百度一下hibernate 复合主键.
      

  2.   


    ,谢谢这位兄弟
    可是我记得复合主键是指的把多个字段作为联合的主键存在,
    而我这里,主键还是一个字段ID,只是这个ID是含有其他的信息,是其他字段信息+sequence组成的呵呵
      

  3.   

    <compeare-id>好像是这个
    很久没有用已经搞忘了
      

  4.   

    1.建立通用主键
    2.在DB里建个sequence.
    3.写个Trigger. 
      create trigger test before
      insert on emp for each row when (new.id is null)
      begin
      select (select dept||positon from emp)||sequence.nextval into :new.id from dual;
     end;
    你试下,看行不
      

  5.   

    Trigger那有点毛病.
    create trigger test before
      insert on emp for each row when (new.id is null)
      begin
    --new.dept代表插入时的dept.---postion
      select new.dept||new.position||sequence.nextval into :new.id from dual;
     end;
      

  6.   

    2>.hibernate处理复合主键映射是基于这样一种做法:把目标类中所有主键关联属性抽出来,单独写成一个类(我暂且叫它主键类),目标类就只需持有主键类对象,而不必再包含各个主键属性;在映射文件中使用<composite-id>标签来配置主键对象并指出关联属性,普通属性照常配置;hibernate只会创建一张表在,并且把主键设置为主键类各属性的联合主键,存储和加载数据时,会自然的把关联对象各属性跟表中的主键字段对应起来。在这个操作过程中,它要求主键类必须是序列化的,并且要覆盖equals方法,最好覆盖hashCode方法。
    <!-- 联合主键 --> 
        <!-- name指的是主键对象属性 --> 
        <composite-id name="departmentPK"> 
          <!-- 这里是主键关联属性 --> 
          <key-property name="area" /> 
          <key-property name="name" /> 
        </composite-id> 
    可以参考这个看看 :http://yangfei520.blog.51cto.com/1041581/310555
      

  7.   

    如果hibernate没有解决办法,那你就用代码完成吧.用普通主键,值自己生成.哈哈哈
      

  8.   

    在联合主键类的get方法上加注解 @EmbeddedId
    不过这样设置,可能存在部分依赖