hibernate 为什么一对多的时候设置成cascade="all" inverse="true",插入的时候外键还是null呢,大哥大姐帮忙啊

解决方案 »

  1.   

    Main {
    Set details;
    }//一Detail{//多
     Main main;
    }有没有detail.setMain(main);?
      

  2.   

    当然有了啊
    <many-to-one name="articalClass" cascade="all"
     class="hibernate.entity.ArticalClass" column="artical_class_id" lazy="false"/>  <set name="articals" cascade="all" inverse="true" table="artical">
                <key>
                    <column name="artical_class_id" />
                </key>
                <one-to-many class="hibernate.entity.Artical"/>
      </set>
      

  3.   

    ssh整合的时候就这个样子了,我以前就用hibernate做的时候不会的,我代码看了几十变了,跟我以前写的代码一样 的,这就想不通了,是不是HibernateDaoSupport没有实现这个功能
      

  4.   

    代码是没有问题的,当在一对多的那一方把 inverse设为"false"的时候能插入的,不过那个字段第一次插入也是null,后来多了条更新语句,把ID更新了 
      

  5.   

    cascade="all" 数据级联,
    inverse="true" 关联关系交给对方管理class A{
      Set<B> children = new HashSet<B>(); 
    ...
    }
    class B{
      A parent;
    ...
    }
    A中
    ....
    <set name="children " inverse="false" cascade="all">
    <key column="parent" />
    <one-to-many class="B" />
    </set>
    ....表示在A对象将保持跟B的关联,保存是只需要save(A)即可添加cascade表示,一旦删除/更新/插入A时,对应的B也将删除/更新/插入B中
    <many-to-one name="parent" column="parent" class="A" inverse="true">
    </many-to-one>表示在B不负责保存跟A的关联,保存是只需要save(A)即可通常要设置A.add();B.setParent(),然后调用save(A),才能存储
      

  6.   

    <many-to-one> 没有inverse="true"的吧!问题不是这样 啊,我就想不通ssh整合就不行,hibernate单独操作就行,这什么原因,代码我看了几百便了,就是看不出哪里 不同,不同的就是一个通过getHibernateTemplate()操作,另一个用 hiberante操作
      

  7.   

    我也不太清楚,看一下lazy OK不
      

  8.   

    额,刚才把inverse="true"改成inverse="false",问题解决了,哎,崩溃!~