我在主表A 增加数据,B子表也要跟着增加相应的数据,子表B也有外键关系 ,关联C表,用SSH做,不知道该如何做,这问题困扰了许久,昨晚3点睡觉都没搞定,好失望,希望你能帮助下我。谢谢了!
表结构:A:主表
create table A   --用户信息
(
  A_ID  NUMBER  not null,
  A_NAME VARCHAR2(20) not null,
  A_PASSWORD  VARCHAR2(20) not null,
  A_STATUS    NUMBER(6) not null,   
  A_VERSION   NUMBER(10) not null    
);
B 表:子表
create table B
(
  B_ID      NUMBER(10) not null,  
  C_ID      NUMBER(10) not null,   --关联 C 的外键字段
 
  A_ID NUMBER  not null --关联 A 的外键字段
);C 表:主表  
create table  C
(
 C_ID    NUMBER(10) not null,   
  C_TITLE VARCHAR2(200) not null,
  C_TYPE  NUMBER(6) not null   
);

解决方案 »

  1.   

    你先一个个高清 A B的关系是什么 一对一  一对多  多对一 多对多?
    然后就用hibernate 生成隐射文件啊 然后设置隐射关系同样的B C 一步步来 
    建议用JPA简单一点
      

  2.   

    A-->B是一对多关系, C-->B也是一对多关系。
      

  3.   

    表结构写错了点,应该C 表:主表  
    create table  C
    (
     C_ID    NUMBER(10) not null,   
      B_ID VARCHAR2(200) not null,
      A_ID  NUMBER(6) not null   
    );
      

  4.   

    既然你是用hibernate那肯定有实体与表的映射.
    A类中有Set<B> bs = new HashSet<B>();
    1.你想在添加A的时候自动添加B,需要给bs属性上添加一个级联保存cascade属性。
    2.由于多的一端也就是B是关系的维护端,当你用bs.add(new B())时不行,此时B是不知道A的存在的
    所以建议在A类中自己写个辅助方法列如:
     public void addB(B b) {
       bs.add(b);
       b.setA(this);//B类中肯定有维护关系的属性假设是A a;a这个,这句是让B端知道A的存在便于更新外键维护2着的关系
     }
    这样当你用session.save(a)时就会将所有对应的b保存进去了,
    3.测试阶段:用junit
      @Test
      public void save() {
      C c = new C();
      c.setxx//设置c的其他属性
      session.save(c);//先要保存c让其处于持久状态  B b1 = new B();
      B B2 = new B();
      A a = new A();
      a.setxx//设置a的其他属性
      b1.setC(c);//设置B与C关系
      b2.setC(c);//设置B与C关系  a.addB(b1);
      a.addB(b2);
      session.save(a);//这样当保存a的时候会保存b,通过b会去更新与c之间的外键来维护b和c之间的关系
      }
    上面的都是伪代码,我这里都没测试过不知道是不是对的,按我的理解应该是没问题的,如果有什么问题我在去测试看看
      

  5.   

    A-->B 多对一,C-->B 多对一......