小弟刚刚学hibernate 没多久 问个比较菜鸟的问题
 
如果想建立这样三张表的映射 其中 第三张表的主键 是前两张表 的主键 在第三张表上的外键构成的联合主键  这样的映射对象该怎么写,= = 可能这个说法有点混乱假设 这三张表 是这样的:A表
===============
AID Primary
NAME
===============B表
===============    
BID Primary     
NAME       
===============  
                 
C表              
===============  
AID Primary A表的外键
BID Primary B表的外键
NAME
===============各位大哥 谁能帮小弟解决下这个问题啊先说声谢谢了

解决方案 »

  1.   

    这种需求好像不太符合数据库设计的三个范式!!应尽量避免使用联合主键!AB表作为C的外键不可以吗?
      

  2.   

    C表 manytoone 对A表
    C表 manytoone 对B表
    至于反向的a->c b->c要不要建onetomany,那就看需要了,不是必须就没必要建
      

  3.   

    如果是从建表一方入手当然有点乱。从建表开始已经是上一代程序的习惯。
    应该从类下手。建立两个对象类(A类,B类)。在建一个关系类(A+B的键做为做为联合主键 )。example:
    class A{
     private long id;
    }class B{
     private long id;
    }class C{
     private A a;
     private B b;
    }
      

  4.   

    = = 楼上这方法我试了 试了半天 C表出不来  也不报错.
    @Entity
    class A{ 
    private long id; 
    @Id
    public long getId();
    //set方法
    } @Entity
    class B{ 
    private long id; 
    @Id
    public long getId();
    //set方法

    @Entity
    @IdClass(ABPK.class)
    class C{
    private A a; 
    private B b;
    @Id
    public A getA();
    @Id
    public B getB();
    }
    //这个就不说了
    class ABPK{
    private A a; 
    private B b;
    }
    试了 把联合主键换成对象设成对象 表就是不出来 也不报错..但是如果是主键设成基本类型 就可以.
    但是那样 对象之间就关联不起来了
      

  5.   

    用数据库手动写这三个表的创建语句,然后用myEclipse生成hibernate实体类,自己研究一下他们之间会产生什么样的实体类